Visual Studio阻止对链接文件的更改

本文关键字:文件 链接 Studio Visual | 更新日期: 2023-09-27 18:28:15

在Visual Studio中,您可以添加到另一个项目中的源文件的链接。是否有一种方法可以强制防止对链接的源文件执行任何更改(即:将它们以"只读"的形式链接到项目中,以防止那些没有意识到它们是链接的,而不是项目本地的人进行意外修改)?

我有两个项目,一个是DLL,另一个是EXE。DLL包含Windows ServiceInstaller和ServiceBase类。我从DLL将这些类链接到我的EXE(EXE有多种风格)中,以便EXE可以作为服务安装,并且不必在所有EXE中复制ServiceBase和ServiceInstaller。然而,我不希望无意中能够在EXE项目的上下文中对链接的类进行更改。

Visual Studio阻止对链接文件的更改

不是通过某些Visual Studio支持的机制,不是

IMHO,一般来说,你不应该使用这样的链接文件。是的,该功能存在于VS中,但正是由于您提到的原因以及其他原因,它是一种解决代码维护难题的好方法。

请注意,您自己的场景也可以通过在程序集中公开共享类型并从需要它们的程序集中引用该程序集来轻松解决。也就是说,只需从EXE中引用DLL并使用编译到DLL中的类型,而不是让EXE使用相同的源代码定义类型的新版本。

Visual Studio没有为链接文件设置"只读"属性的方法,但通常情况下,链接文件造成的问题比解决的问题多。

一般来说,代码重用的首选方法是将类放入DLL中,然后从EXE中引用这些类,但在您的情况下,ServiceInstaller和ServiceBase类必须存在于EXE中,以便Windows服务机制能够获取它们。

您可以创建继承自ServiceInstaller和ServiceBase的基类,并将它们放入DLL中,而不是链接文件。然后将从自定义基类(包含大部分逻辑)继承的新类添加到EXE中。通过这种方式,所有共享代码都是从共享DLL中提取的,但EXE仍然包含启动Windows服务所需的类。