C# 项目 : how to update referenced assembly version

标签 c# .net visual-studio-2012 .net-assembly

我有一个引用单面程序集的 C# 项目。当我尝试更新双面程序集时,版本标记在 *.csproj 文件中保持不变,即使我卸载/重新加载项目也是如此:

<Reference Include="<myAssembly>, Version=<oldVersion>, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath><myHintPath></HintPath>
</Reference>

所以我的项目试图引用旧版本的程序集,这会导致异常。手动更改引用文献中的所有这些版本非常痛苦,尤其是在有大量引用文献的情况下。

我尝试将引用的某些属性(如 SpecificVersion)更改为 True 并返回到 False,并刷新引用:

<Reference Include="<myAssembly>, Version=<newVersion>, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath><myHintPath></HintPath>
</Reference>

任何想法,如果我更新程序集,如何自动更新引用?请注意,当我引用任何系统程序集(如 System.Configuration.Install)时,引用非常简单:

<Reference Include="System.Configuration.Install" />

我可以手动删除从该引用到单边程序集的所有内容,但是当我更改某些属性时,它会返回到复杂版本,我不确定这是否安全。

那么如何正常更新引用呢?

最佳答案

如果您总是想从指定路径获取最新版本的程序集,只需避免 csproj 文件中的版本属性或将 SpecificVersion 设置为 False。 SpecificVersion 为可选属性,表示是否进行全名匹配(包括版本、文化、PublicKeyToken)。

<Reference Include="assemblyNameOnly">
   <HintPath>pathToDll</HintPath>
</Reference>

但不建议这样做,因为新版本的程序集可能会导致编译错误,例如方法签名已更改。相反,最好使用强命名程序集和 redirect assembly versions使用配置文件。

<Reference Include="assemblyName, Version=Version, Culture=neutral, PublicKeyToken=keyToken, processorArchitecture=MSIL">
  <SpecificVersion>True</SpecificVersion>
  <HintPath>pathToDll</HintPath>
</Reference>

然后运行时将使用描述的算法定位新程序集 here

关于C# 项目 : how to update referenced assembly version,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142931/

相关文章:

c# - 查找复选框的值

c# - vb.net代码USING和WITH的c#代码是什么

.net - System.Configuration.ConfigurationManager 不可用?

c++ - 为什么 Visual Studio 2012 不为我插入括号?

c# - visual studio 2010 express 和 2012 express 打开c#项目的区别

c# - 编辑以编程方式创建的数据表 asp.net webforms

c# - Python hmac 和 C# hmac

c# - 如何在 xamarin 中设置 onclick 监听器?

c# - 在 C# LINQ 中实现 RANK OVER SQL 子句

c++ - 是否可以组织 c++ 头文件和 cpp 文件?