2016-02-03 161 views
0

我做了一個C#.NET的DLL,我想從VBA運行而不註冊它。 我找到了解決方案there,它完美的工作,但只有當程序集是由Framework NET 3.5或更早的版本製作的。 使用Framework 4.0時,出現錯誤「此程序集由比當前加載的運行時更新的運行時構建,無法加載」.. 有人可以幫助我嗎?VBA C#DLL沒有註冊

+0

哦,親愛的,這不是一個有用的答案。它使用了.NET 1.0技術,該技術尚未允許確定要加載的CLR版本。從v4.0.30319文件夾中選擇tlb文件完成任何操作。它適用於3.5彙編是一個意外,今天常見,因爲大多數機器不再安裝.NET 1.x版本。如果真的存在,那就是你。不要這樣做。 –

回答

0

所以,我找到了解決方案。

默認情況下,Excel使用1.1框架,如here所述。 如果你看看在Windows註冊表中,

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Policy\AppPatch\YOUR_FRAMEWORK_VERSION\excel.exe\ 

你可以看到有針對性的版本是V1.1 ..... 所以,解決的辦法是讓一個Excel.exe.config文件部隊框架版本4,如解釋here

<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0.30319"/> 
    </startup> 
</configuration>