[MSCE C++]如何给C++/CLI式的DLL增加版本信息?

请问如何在c++/cli项目中将mke文件中定义的ASSEMBLY_VERSION/ASSEMBLY_TITLE等版本信息写入dll中,在文件linkMixedAssembly.mki中包含的generateAssemblyInfocpp.mki文件中定义了编译过程中生成*AssemblyInfo.cpp文件,但是如何将这个*Assemblyinfo.cpp编译进dll中呢,按照此贴的说法https://stackoverflow.com/questions/50086696/cannot-embed-c-clr-assembly-version-number,我尝试了新建一个c++/cli的exe项目,确实添加包含版本信息.rc资源文件并不能解决问题,只能添加文件AssemblyInfo.cpp解决,不知道在mke中要如何定义,参考C#/VB添加版本信息的写法ASSEMBLY_INFO_SOURCE=$(o)AssemblyInfo.cs/ASSEMBLY_INFO_SOURCE=$(o)AssemblyInfo.vb,好像也没有成功,麻烦老师知道一下,谢谢。

Parents
  • 李工:你好!

    阅读了大量网上的帖子后发现,对于C++/CLI项目,这个AssemblyInfo.cpp中设置的内容不能展示到Windows资源管理器的“详细信息(Details)”,该cpp中设置的信息仅供Assembly.GetReferencedAssemblies方法的调用来获得(这一点我并未编程测试)。

    要想设置C++/CLI生成的DLL(或者EXE)的详细信息,需要借助于VS中的资源文件RC。故针对MSCE SDK中带有的例子做了如下测试是可以的。

    1. 任意建立了一个C++/CLI的项目(比如叫CLR-Test),给其添加Version资源,然后编辑其中的内容,删除了默认带有的Icon资源。结果如下:

    2. 将生成的app.rc源文件复制到C:\Program Files\Bentley\MicroStationCONNECTSDK\examples\MixedMode\ElementPropertiesExample下,用记事本程序(Notepad)打开这个app.rc,删除 #include "resource.h"一行。否则,bmake时会提示找不到resource.h。这个resource.h中并未定义任何内容,故可以删除之。

    3. 修改ElementPropertiesExample.mke文件如下(将app.rc编译成app.res,最后将app.res链接到DLL中):

    4. bmake生成ElementPropertiesExample.dll,到Windows资源管理器中查看该DLL的详细信息如下;



    Answer Verified By: Zemin.Li 

Reply
  • 李工:你好!

    阅读了大量网上的帖子后发现,对于C++/CLI项目,这个AssemblyInfo.cpp中设置的内容不能展示到Windows资源管理器的“详细信息(Details)”,该cpp中设置的信息仅供Assembly.GetReferencedAssemblies方法的调用来获得(这一点我并未编程测试)。

    要想设置C++/CLI生成的DLL(或者EXE)的详细信息,需要借助于VS中的资源文件RC。故针对MSCE SDK中带有的例子做了如下测试是可以的。

    1. 任意建立了一个C++/CLI的项目(比如叫CLR-Test),给其添加Version资源,然后编辑其中的内容,删除了默认带有的Icon资源。结果如下:

    2. 将生成的app.rc源文件复制到C:\Program Files\Bentley\MicroStationCONNECTSDK\examples\MixedMode\ElementPropertiesExample下,用记事本程序(Notepad)打开这个app.rc,删除 #include "resource.h"一行。否则,bmake时会提示找不到resource.h。这个resource.h中并未定义任何内容,故可以删除之。

    3. 修改ElementPropertiesExample.mke文件如下(将app.rc编译成app.res,最后将app.res链接到DLL中):

    4. bmake生成ElementPropertiesExample.dll,到Windows资源管理器中查看该DLL的详细信息如下;



    Answer Verified By: Zemin.Li 

Children