2014-10-01 63 views
3

我有一个C#项目引用了侧面程序集。当我尝试更新的双面组件,版本标签停留在* .csproj的文件,即使我卸载/重装项目相同:C#项目:如何更新引用的程序集版本

<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" /> 

我可以手动从参考双面组件移除一切,但是当我改变一些属性,它就会回到复杂的版本,我不确定这是否安全。

那么如何正常更新引用?

+0

从几想法[毫秒](http://msdn.microsoft.com/en-us/library/51ket42z(V = VS 0.110)的.aspx)。 1)看看旧的dll是否在GAC中。如果是这样,删除它 2)看看DLL版本#是否在app.config中,如果是的话,改变它。 – 2014-10-01 16:14:29

+0

相关:[程序集引用的“特定版本”属性在Visual Studio中的工作原理是什么?](http://stackoverflow.com/q/24022134/2157640) – Palec 2016-08-06 19:27:40

回答

5

如果您始终想从指定路径获取最新版本的程序集,请避免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

+0

因此,如果最好使用默认变体,通过Visual Studio自动刷新引用?或者没有什么可做的,但要添加/删除引用? – 2014-10-02 07:14:25

+0

如果要使用的新版本的dll包含Publisher策略文件并在GAC中注册,则重定向到新程序集将自动完成。发布者策略文件由dll供应商提供,并定义从以前版本到新版本的重定向。如果您没有发布者策略文件,则可以手动在应用配置或计算机配置文件中设置程序集重定向。看下一篇文章http://www.c-sharpcorner.com/uploadfile/satisharveti/introduction-to-publisher-policy-file/和http://msdn.microsoft.com/en-us/library/7wd6ex19(v = vs.110)的.aspx – rsemenov 2014-10-02 09:37:16

相关问题