我正在使用在Visual Studio 2012中包装C ++ Native Library的C ++ / CLI项目。
我的C ++ / CLI项目有一个AssemblyInfo.cpp。我在那里设置了所有字段,其中包括" AssemblyVersionAttribute"。但是,当我在Windows资源管理器中构建项目并检查其属性时,版本信息为空。
这是我的第一个C ++ / CLI项目,我一直在查看项目属性中的所有选项,但我找不到任何可用于设置版本的选项。
如何设置C ++ / CLI项目的版本?
更新
我将添加AssemblyInfo.cpp的内容。我刚刚填写了现有的字段,这是在我创建项目时自动生成的。
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
[assembly:AssemblyTitleAttribute("MyTitle")];
[assembly:AssemblyDescriptionAttribute("")];
[assembly:AssemblyConfigurationAttribute("")];
[assembly:AssemblyCompanyAttribute("")];
[assembly:AssemblyProductAttribute("MyProduct")];
[assembly:AssemblyCopyrightAttribute("Copyright © 2014")];
[assembly:AssemblyTrademarkAttribute("Inc")];
[assembly:AssemblyCultureAttribute("")];
[assembly:AssemblyVersionAttribute("3.9.0")];
[assembly:ComVisible(false)];
[assembly:CLSCompliantAttribute(true)];
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];
答案 0 :(得分:21)
'详细信息' Windows资源管理器中的页面正在从文件中的非托管结构中提取信息,因此您需要创建一个非托管版本资源才能填充该文件。
我建议您也在AssemblyInfo.cpp文件中维护各种程序集属性。如果使用反射来获取有关程序集的信息,它将使用AssemblyInfo.cpp中的内容,而不是版本资源中的内容。
答案 1 :(得分:0)
有两个属性; AssemblyVersion
属性和AssemblyFileVersion
属性。使用C#编译器,如果未提供AssemblyVersion
,则文件版本将跟踪AssemblyFileVersion
。我不记得C ++ / CLI编译器的行为是否有所不同,但尝试AssemblyFileVersion
肯定值得一试。
答案 2 :(得分:0)
您可以修改文件夹VS_VERSION_INFO
中的\app.rc\Version
文件。您可以使用Resource Visualizzation IDE来显示此信息文件。