我们的代码库要求自动编号程序集,我将默认版本号1.0.0.0更改为1.0.*,如下所示:
[assembly: AssemblyVersion("1.0.*")]
这样可以生成所需的编号。
但是,该代码库有数百个DLL文件,其中许多引用彼此。现在,当我编译某些项目时,它们会抱怨需要的已引用组件的DLL版本不正确,并且它们无法构建:(
我应该如何解决呢?我们需要在编译代码库层次结构底部的DLL时,所有引用它的其他DLL都能正确工作,而无需重新编译。
我收到的错误消息类似于这样:
Error 1 CA0058 : The referenced assembly 'Library1, Version=1.0.4146.17993
, Culture=neutral, PublicKeyToken=d9c65edd2096ad48' could not be found. This assembly
is required for analysis and was referenced by:
D:\Work\Source Code\Library\Library2\bin\Release\Library2.dll.
版本号1.0.4146.17993不正确——DLL的值更高。我们设置DLL为本地复制,因为我们提供的软件需要它(不要问为什么)。被本地复制的DLL是具有更高版本号的那个,而这正是我们想要的。
到目前为止,我尝试过更改引用,将“Specific Version”标志设置为false,但这没有帮助。
[AssemblyVersion]
属性,那么你将会告诉CLR这个程序集与之前的版本不兼容。相反,你需要增加[AssemblyFileVersion]
属性。Visual Studio并不能正确处理这个问题,但第三方工具可以让你更好地控制哪一个属性被增加。 - Cody Gray