2011-10-25 122 views
1

我有一个问题让AssemblyVersion与我正在处理的类库中的AssemblyFileVersion属性不同。AssemblyFileVersion属性被忽略

所以,我试过创建一个空的(除了Class1.cs)类库来查看它是否设置在某处,但我得到了相同的行为。

看来AssemblyVersion属性被忽略。

这里是我的AssemblyInfo.cs文件的相关位...

[assembly: AssemblyVersion("0.1")] 
[assembly: AssemblyFileVersion("1.1.0.9")] 

,这里是东西怎么看在Windows资源管理器...

Windows Explorer Screen Grab

是否有设置某处控制着这个?

编辑: 我发现一个文件,其中是有区别的,所以它不会显示两个不同的领域相同的值Windows资源管理器,它的东西做从编译器生成的DLL的方式/链接...

enter image description here

+0

产品版本!=汇编版本。看起来它对我来说是正确的... –

+0

@Marc,那么AssemblyVersion属性在Windows资源管理器中映射到什么地方? –

+0

很确定它使用*来显示,但我确实无法在win-7中显示它。答案完全可能是:它根本不影响explorer *,但仍然是程序集定义的重要组成部分。 –

回答

5

这里的关键问题是Windows不知道托管程序中的属性。它读取非托管文件版本资源。使用/ win32res编译选项嵌入C#程序集的程序。如果不使用该选项,编译器会自动生成它,使用AssemblyInfo.cs中指定的程序集属性值来创建资源。

但是,非托管文件版本资源没有标准字段来指定类似[AssemblyVersion]的任何内容。只有[AssemblyFileVersion]。编译器实际发出它,版本资源是可扩展的。但是Windows XP是仍然显示这些自定义字段的最后一个版本。您可以通过在Visual Studio中用File + Open + File打开程序集来查看非托管资源。

是的,跛脚和烦人。MS中的Windows组不喜欢托管代码。

1

检查我的电脑上,它的实际工作正常。

资源管理器:

enter image description here

属性:

enter image description here

其他哪些不同的是: enter image description here

我的Windows explorer.exe的版本是6.1.7601.17567如果帮助。 Windows 7的SP1

测试这个自己在Visual Studio中

[assembly: AssemblyVersion("2.2.2.2")] 
[assembly: AssemblyFileVersion("3.3.3.3")] 

给了结果: enter image description here 所以看起来像Visual Studio是在这里做了什么。

3

右键,找到了答案:-)

您需要编辑的AssemblyInfo.cs,并添加以下底部

[assembly: AssemblyInformationalVersion("4.4.4.4")] 

该值显示在浏览器中的“产品版本”。 AssemblyInformationalVersion是可选的。如果没有给出,则使用AssemblyVersion。关于这一主题

更多信息here

+0

是的,我发现这个属性,但没有尝试。谢谢。 –

+0

我刚刚有不同的'AssemblyVersion'和'AssemblyFileVersion'条目,而**'AssemblyFileVersion' **用于Explorer中的产品和文件版本。 (仍然可以使用AssemblyInformationalVersion修复产品版本,但是这与上面提到的略有矛盾。我认为如果没有使用AssemblyInformationalVersion而没有使用AssemblyFileVersion,那么使用AssemblyVersion 。) – ruffin