[英]how to use app.config on the DLL instead of exe
這是一個姐妹問題,也是我的第一個問題, 允許使用.NET 2.0構建的C#應用程序在.NET 4.0 / 4.5上運行 。 我在那里簡化了我的處境,以便理解。 實際上,我們的情況有點特殊。
基本上,我們為MSI安裝程序編寫了一個C#DLL(我們稱為E.dll
)。 由於我們的MSI安裝程序使用的是Windows安裝程序的較舊版本,因此它無法直接使用C#DLL,並且只能與C類型的DLL一起使用,因此我們使用一個名為DLLExporter的開源庫來生成C導出函數入口。 E.dll
是使用.NET 2.0(VS2005)構建的。
正如我的第一個問題所述,我們很難在僅安裝.NET 4.0或更高版本的計算機上運行安裝程序。 經過這個出色的論壇的一些努力和幫助之后,我認為我開始了解這個問題,這是最終的應用程序配置文件:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0"/>
</startup>
由於這些C導出函數入口點,最終的C#dll被認為是混合模式程序集,因此在.NET 4.0上我需要useLegacyV2RuntimeActivationPolicy為“ true”。
但是,有一個問題,配置必須在exe上,而不是在DLL上。 我通過使用測試工具exe確認了這一點,該工具可以像我們的MSI一樣動態加載E.dll
。 讓我們將測試工具exe稱為T.exe
。 因此,通過使用上述E.dll.config
內容將無濟於事。 我們需要T.exe.config
文件。 但是,對於我們的MSI安裝程序,它是位於C:\\windows\\system32
msiexe.exe.config
,我們無法將名為msiexe.exe.config
的文件放入system32中(我只是對其進行了測試,但它無法正常工作,我仍然需要找出哪個exe我應該擁有app.config文件)。 無論哪個exe,都是一團糟。 我將無法通過在.NET 4.0(VS2010)中構建DLL來解決此問題,因為我需要配置文件才能將useLegacyV2RuntimeActivationPolicy設置為“ true”。
知道如何將app.config放在DLL而不是exe上嗎?
我的建議是使用蹦床.EXE產生.NET DLL進程外。
msiexec.exe.config無效,因為msiexec.exe具有嵌入式清單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.