我正在试验程序集和文件版本号。虽然我的程序在IDE中运行良好,但在创建安装文件并安装应用程序时发生InvalidDeploymentException崩溃。
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
[AssemblyVersion]和[AssemblyFileVersion]属性扮演不同的角色。 [AssemblyVersion]仅对托管代码可见,对GAC很重要。每当在程序集的公共接口中进行重大更改时,您应该将此数字提高。
编译器使用/ win32res命令行选项在程序集中嵌入非托管资源。这包括VERSIONINFO resource,可由所有非托管代码读取,包括shell。它确定在资源管理器中右键单击程序集时看到的内容,并查看“详细信息”属性页。此处显示的“文件版本”值由[AssemblyFileVersion]属性设置。那里没有[AssemblyVersion]值,资源管理器(还)不知道如何阅读它。
由您决定如何使用此属性。崩溃表明在部署代码中进行了一些最小的健全性检查,从未尝试过自己弄错,看看会发生什么。然而,使它们相同会有很大的意义。
Microsoft以不同的方式使用[AssemblyFileVersion],它们会自动为每个构建增加它并将[AssemblyVersion]钉下来。这是一个好主意和我使用的策略。然而具有讽刺意味的是,自动版本增量功能完全向后工作,它只能自动增加[AssemblyVersion]。叹息。
答案 1 :(得分:0)
尝试使用fusion log viewer查看已部署的应用中未加载的内容。