我有一个Win32程序集( .NET代码的C++/CLI包装器),它应该安装在WinSxS中,应该由客户端应用程序使用API从该位置引用。我研究了一下如何在Win32中安装WinSxS程序集,最后通过使用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>执行失败与错误信息:程序无法启动,因为MyAssembly.dll是从您的计算机丢失。尝试重新安装程序以解决此问题。
在与Procmon检查时,exe似乎只搜索exe位置中的dll和Path环境变量中指定的所有位置。当我在路径变量中放置dll的WinSxS位置并执行应用程序时,它正常工作。我想知道,在生成导致问题的exe清单时,是否还有其他项目设置丢失。想法?
发布于 2015-01-17 14:41:56
结果发现问题是UAC项目设置。将UAC属性设置为No解决了问题,应用程序现在可以加载程序集,而不必使用添加到PATH变量之类的解决方法。
https://stackoverflow.com/questions/25301161
复制相似问题