2010-10-08 57 views
3

我與微軟的.NET Framework 4.0MakeSfxCA.exe和DLL編譯框架4.0

編譯一個dll文件,當我使用MakeSfxCA.exe文件,並通過該dll作爲參數的一個命令行它給我以下錯誤消息:

 
D:\SetupManager\test>D:\SetupManager\SetupBuilding\Wix\bin\sdk\makesfxca.exe Fil 
e2.dll D:\SetupManager\SetupBuilding\Wix\bin\sdk\x86\sfxCA.dll File1.dll CustomA 
ction.config 
Searching for custom action entry points in File1.dll 
Error: System.BadImageFormatException: Could not load file or assembly 'file:/// 
D:\SetupManager\test\File1.dll' or one of its dependencies. **This assembly is bui 
lt by a runtime newer than the currently loaded runtime and cannot be loaded.** 
File name: 'file:///D:\SetupManager\test\File1.dll' 
    at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, 
Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boo 
lean throwOnFileNotFound, Boolean forIntrospection) 
    at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, E 
vidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Bool 
ean throwOnFileNotFound, Boolean forIntrospection) 
    at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence 
assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) 
    at System.Reflection.Assembly.InternalLoadFrom(String assemblyFile, Evidence 
securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean 
forIntrospection, StackCrawlMark& stackMark) 
    at System.Reflection.Assembly.ReflectionOnlyLoadFrom(String assemblyFile) 
    at Microsoft.Deployment.Tools.MakeSfxCA.MakeSfxCA.FindEntryPoints(String modu 
le) 
    at Microsoft.Deployment.Tools.MakeSfxCA.MakeSfxCA.Build(String output, String 
sfxdll, IList`1 inputs, TextWriter log) 
    at Microsoft.Deployment.Tools.MakeSfxCA.MakeSfxCA.Main(String[] args) 

=== Pre-bind state information === 
LOG: User = DSDMAIN\Rajesh 
LOG: Where-ref bind. Location = D:\SetupManager\test\File1.dll 
LOG: Appbase = file:///D:/SetupManager/SetupBuilding/Wix/bin/sdk/ 
LOG: Initial PrivatePath = NULL 
Calling assembly : (Unknown). 
=== 
LOG: This is an inspection only bind. 
LOG: No application configuration file found. 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v2 
.0.50727\config\machine.config. 
LOG: Attempting download of new URL file:///D:/SetupManager/test/File1.dll. 
ERR: Failed to complete setup of assembly (hr = 0x8013101b). Probing terminated. 

任何幫助表示讚賞。

在此先感謝。

回答

2

我有一個類似的問題,通過添加以下代碼到CustomActions.config文件,並創建一個旁文件MakeSfxCA.exe.config向MakeSfxCA.exe

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
     <supportedRuntime version="v4.0" /> 
    </startup> 
</configuration> 
2

我的問題是工作稍有不同,但它可能對其他人有用。 .config文件必須在項目中使用名稱「CustomAction.config」。它不能有名稱<YourCAProject>.config將重命名項目給dll一個唯一的名稱時會發生。看來MakeSfxCA構建工具和SfxCA存根現在取決於此文件名。

+0

這對我也造成了問題;謝謝! – 2013-02-19 12:04:45