簡體   English   中英

如何在DLL而不是exe上使用app.config

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM