c# - 在运行时不是特定于版本的 Visual Studio 项目引用

标签 c# .net visual-studio dll

我们有一个多项目解决方案。项目之间的引用是作为项目引用而不是程序集引用(正如人们所期望的那样)完成的。这对我们的部署工作正常,但会创建特定于版本的运行时依赖项。问题是我们想开始创建仅更新特定更改的 dll 的修补程序安装程序。更新所有 dll 不适合我们当前的客户情况。

项目引用的“特定版本”属性被禁用,除了切换到程序集引用并使用 csproj 中的 Choose block 根据构建配置在调试/发布 bin 之间切换之外,我无法找到解决方法。

是否有另一种方法允许在运行时使用任何版本?

最佳答案

免维护

我们采用的方法是将程序集版本设置为固定数字,并且仅在构建时更新文件版本。(我们过去常常使两者保持同步)。我们采用了这种方法,因为它是免维护的,并且让我们按项目保留我们的引用。

程序集版本是 .net 用于查找依赖 dll 的特定版本的内容。如果您通过 Windows 资源管理器查看文件的属性详细信息,将显示文件版本。

如果您希望能够修补任何 dll,则需要将所有程序集引用更新为 versionSpecific=false 并将所有项目设置为具有固定的程序集版本。如果您只想修复特定项目的 dll,则只需修复这些项目的程序集版本。然后,引用项目可以保留您想要的任何程序集版本方案。

程序集版本在 ProjectFolder/Properties/AssemblyInfo.cs 中设置。我们现在已将我们的版本固定为 1.0.0.0,并且仅在构建时增加文件版本。

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.2.3.45678")]

关于c# - 在运行时不是特定于版本的 Visual Studio 项目引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51563447/

相关文章:

C# 重载返回类型 - 推荐方法

c# - 菜单的键盘顺序快捷方式

c# - "VsTsc"任务无法用其输入 > 参数初始化

c# - 对于 asp.net 中的 Int32,值太大或太小

c# - 具有大结果的 Web 服务

c# - 通过代码隐藏将 CANONICAL 标签添加到我的页面以进行 SEO?

c# - 指定的强制类型转换无效 – SQL float to C# double

c# - CosmosDB 的 MongoDB api 限制访问

c# - 如何从 WCF REST 方法返回自定义 HTTP 状态代码?

docker - Visual Studio 生成的 Dockerfile 不适用于手动 docker build