我有一个Win32程序集(我的.NET代码上的C ++ / CLI包装器),它应该安装在WinSxS中,并且应该由使用API的客户端应用程序从该位置引用。我研究了一下如何在WinSxS中安装Win32程序集,并最终能够通过使用mainfest和目录文件来完成它。
现在的问题是,我无法使用我为测试目的而创建的控制台应用程序中的程序集。我在exe清单中添加了一个<dependency>
部分来引用程序集(如下所示),但它不起作用。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity name="MyAssembly" processorArchitecture="x86" publicKeyToken="10f783dc6145a3s0" type="win32" version="1.0.0.58">
</assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
exe失败并显示错误消息:程序无法启动,因为您的计算机缺少MyAssembly.dll。请尝试重新安装该程序以解决此问题。
在使用Procmon检查时,似乎exe只搜索exe位置中的dll以及Path环境变量中指定的所有位置。当我将dll的WinSxS位置放在Path变量中并执行应用程序时,它正常工作。我想知道在生成导致问题的exe清单时是否还有其他项目设置缺失。想法?