我被要求在代码库中为程序集添加自动编号.我一直在将版本从默认的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.
Run Code Online (Sandbox Code Playgroud)
版本1.0.4146.17993不正确 - DLL具有更高的值.DLL被设置为Copy Local,因为我们提供的软件需要它(不要问为什么).在本地复制的DLL是具有更高版本号的DLL,这是我们想要的版本号.
到目前为止,我已经尝试更改引用以将"特定版本"标志设置为false但这没有帮助.
使用1.0.*语法时VS生成的版本号不一定按顺序递增.该文件是这样说的(强调):
您可以指定所有值,也可以使用星号()接受默认的内部版本号,修订号或两者.例如,[assembly:AssemblyVersion("2.3.25.1")]表示2为主要版本,3表示次要版本,25表示构建号,1表示版本号.诸如[assembly:AssemblyVersion("1.2. ")]之类的版本号指定1作为主要版本,2指定为次要版本,并接受默认的构建和修订号.诸如[assembly:AssemblyVersion("1.2.15.*")]之类的版本号指定1作为主要版本,2作为次要版本,15作为构建号,并接受默认修订号.默认内部版本号每天递增.默认修订号是随机的.
如果您完全正确地进行版本控制至关重要,我强烈建议您使用第三方解决方案.该内部版本增量加载项是优秀的.
您想要做的是自己管理程序集版本.只有在对程序集的公共接口进行重大更改时才会增加此值.更改此属性会使程序集与引用它的其他程序集不兼容,即使您没有更改代码中的内容也是如此.相反,您唯一想要自动递增的是程序集文件版本.与程序集版本不同,CLR不会检查此属性以确定兼容性.
Build Version Increment加载项为您提供了一种细粒度的控制,可以对增加的内容进行精细控制.这可能应该包括在VS中.
| 归档时间: |
|
| 查看次数: |
3203 次 |
| 最近记录: |