13 .net c# visual-studio
我和Paul一年前遇到的问题类似(请参阅如何将清单添加到.NET DLL中?).也就是说,我在Visual Studio 2008中有一个C#类库项目,它输出一个dll.该DLL引用了一些私有程序集,因此我想在dll中添加一个程序集清单,指定那些其他引用的程序集.
我知道如何为可执行文件执行此操作,它只是appName.exe.manifest,当文件包含在项目中时,您可以只选择它作为项目属性中的清单.
根据Ruben给Paul的答案(在上面的Stack Overflow线程中),一个清单只适用于exes.但是,有关清单的Microsoft文档似乎另有建议(如果我错了,请更正我),MSDN程序集清单:
程序集清单是一个描述并行程序集的XML文件.程序集清单描述了程序集的并排程序集,文件和资源的名称和版本,以及程序集对其他并排程序集的依赖性.正确安装,激活和执行并排组件要求组件清单始终伴随系统上的组件.
由于并行搜索私有程序集的方式,在将DLL打包为私有程序集时,以下命名限制适用.建议的方法是将程序集清单作为资源放入DLL中.在这种情况下,资源ID必须等于1,并且专用程序集的名称可能与DLL的名称相同.例如,如果DLL的名称是Microsoft.Windows.mysample.dll,则清单的assemblyIdentity元素中使用的name属性的值也可以是Microsoft.Windows.mysample.
另一种方法是将程序集清单放在单独的文件中.在这种情况下,程序集的名称及其清单必须与DLL的名称不同.例如,Microsoft.Windows.mysampleAsm,Microsoft.Windows.mysampleAsm.manifest和Microsoft.Windows.Mysample.dll
所以我创建了一个程序集清单assemblyName.manifest作为一个单独的文件,并将其包含在类库项目中.但是当我去项目的属性时,我得到了与Paul相同的结果,禁用了使用自己的清单的选项.
难道我做错了什么?如何将清单添加到程序集中?
Han*_*ant 11
你引用的内容对.NET程序集来说是不合适的.Windows并行缓存用于非托管DLL,与.NET完全等效的是GAC.此外,编译器已嵌入对程序集清单中的依赖程序集的引用.如果在程序集上运行Ildasm.exe,则可以看到它.双击清单,您将看到列出的.assembly指令.
Fwiw,将您自己的Windows清单嵌入类库中不是问题.只需使用Project + Add New Item并选择Application Manifest File模板项.当然,自动生成的内容对于DLL来说是完全错误的,但它确实嵌入在DLL中.可以看到的是通过使用文件+打开+文件,并选择您的装配.您将看到带有资源ID 2的RT_MANIFEST.只是重申:除非您想要输入无reg的COM指令,否则不要对托管DLL执行此操作.
| 归档时间: |
|
| 查看次数: |
15681 次 |
| 最近记录: |