3

我有一个用 Microsoft .NET Framework 4.0 编译的 dll 文件

当我使用 MakeSfxCA.exe 文件并将 dll 作为参数之一传递给命令行时,它会给我以下错误消息:

D:\SetupManager\test>D:\SetupManager\SetupBuilding\Wix\bin\sdk\makesfxca.exe 文件
e2.dll D:\SetupManager\SetupBuilding\Wix\bin\sdk\x86\sfxCA.dll File1.dll CustomA
操作配置
在 File1.dll 中搜索自定义操作入口点
错误:System.BadImageFormatException:无法加载文件或程序集'file:///
D:\SetupManager\test\File1.dll' 或其依赖项之一。**这个组件是bui
lt 由比当前加载的运行时更新的运行时进行,并且无法加载。**
文件名:'file:///D:\SetupManager\test\File1.dll'
   在 System.Reflection.Assembly._nLoad(AssemblyName 文件名,字符串代码库,
证据 assemblySecurity、Assembly locationHint、StackCrawlMark& stackMark、Boo
精益 throwOnFileNotFound, Boolean for Introspection)
   在 System.Reflection.Assembly.nLoad(AssemblyName 文件名,字符串 codeBase,E
vidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Bool
ean throwOnFileNotFound, Boolean for Introspection)
   在 System.Reflection.Assembly.InternalLoad(AssemblyName 组件引用,证据
 assemblySecurity, StackCrawlMark& stackMark, Boolean for Introspection)
   在 System.Reflection.Assembly.InternalLoadFrom(字符串 assemblyFile,证据
securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean
 forIntrospection, StackCrawlMark & stackMark)
   在 System.Reflection.Assembly.ReflectionOnlyLoadFrom(字符串 assemblyFile)
   在 Microsoft.Deployment.Tools.MakeSfxCA.MakeSfxCA.FindEntryPoints(字符串模
乐)
   在 Microsoft.Deployment.Tools.MakeSfxCA.MakeSfxCA.Build(字符串输出,字符串
 sfxdll、IList`1 输入、TextWriter 日志)
   在 Microsoft.Deployment.Tools.MakeSfxCA.MakeSfxCA.Main(String[] args)

=== 预绑定状态信息 ===
日志:用户 = DSDMAIN\Rajesh
LOG:where-ref 绑定。位置 = D:\SetupManager\test\File1.dll
日志:Appbase = file:///D:/SetupManager/SetupBuilding/Wix/bin/sdk/
日志:初始 PrivatePath = NULL
调用程序集:(未知)。
===
LOG:这是一个仅检查绑定。
LOG:未找到应用程序配置文件。
LOG:使用 C:\Windows\Microsoft.NET\Framework\v2 中的机器配置文件
.0.50727\config\machine.config。
日志:正在尝试下载新的 URL 文件:///D:/SetupManager/test/File1.dll。
ERR:无法完成程序集设置(hr = 0x8013101b)。探测终止。

任何帮助表示赞赏。

提前致谢。

4

2 回答 2

2

通过将以下代码添加到 CustomActions.config 文件并在 MakeSfxCA.exe 旁边创建 MakeSfxCA.exe.config 文件,我遇到了类似的问题

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
    </startup>
</configuration>
于 2010-11-23T08:52:51.803 回答
2

我的问题略有不同,但它可能对其他人有用。该文件在您的项目中.config必须具有名称“ ”。CustomAction.config它不能具有<YourCAProject>.config重命名项目以赋予 dll 唯一名称时会发生的名称。现在看来MakeSfxCA构建工具和SfxCA存根依赖于这个文件名。

于 2011-11-30T14:17:18.540 回答