Art*_*kyi 5 .net c# .net-assembly visual-studio-2012
我有一个引用双面装配的C#项目.当我尝试更新双面程序集时,即使我卸载/重新加载项目,Version标记在*.csproj文件中保持不变:
<Reference Include="<myAssembly>, Version=<oldVersion>, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath><myHintPath></HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
所以我的项目试图引用旧版本的程序集,这会导致异常.手动更改引用中的所有版本是非常痛苦的,特别是如果有很多引用的话.
我试图改变一些引用属性,比如SpecificVersion,to True和back False,以及引用刷新:
<Reference Include="<myAssembly>, Version=<newVersion>, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath><myHintPath></HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
如果我更新程序集,任何想法,如何自动更新引用?请注意,当我引用任何系统程序集时System.Configuration.Install,引用非常简单:
<Reference Include="System.Configuration.Install" />
Run Code Online (Sandbox Code Playgroud)
我可以手动删除从引用到双面装配的所有内容,但是当我更改某些属性时,它会返回到复杂版本,我不确定这是否安全.
那么如何正常更新参考?
小智 7
如果您始终希望从指定路径获取最新版本的程序集,请避免在csproj文件中使用version属性或将SpecificVersion设置为False.SpecificVersion是一个可选属性,指示是否进行完整的名称匹配(包括version,culture和PublicKeyToken).
<Reference Include="assemblyNameOnly">
<HintPath>pathToDll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
但不建议这样做,因为新版本的程序集可能导致编译错误,例如方法签名已更改.相反,最好使用强命名程序集并使用配置文件重定向程序集版本.
<Reference Include="assemblyName, Version=Version, Culture=neutral, PublicKeyToken=keyToken, processorArchitecture=MSIL">
<SpecificVersion>True</SpecificVersion>
<HintPath>pathToDll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
然后,Runtime将使用此处描述的算法定位新程序集
| 归档时间: |
|
| 查看次数: |
10377 次 |
| 最近记录: |