2012-04-04 51 views
6

我有一個可執行項目,比如A,它正在運行中啓動另一個可執行項目B。爲了在A的當前工作文件夾中有一個B.exe,我添加B作爲A的引用,以便編譯後B.exe將被複制到A的文件夾中。但是,我注意到我爲B所做的配置未在A的文件夾中複製或生成(A的文件夾中沒有B.exe.config文件,只有B.exe),因此B的跟蹤等內容不是正確配置。如何在.NET中引用可執行文件中包含App.config信息?

我當然可以將B.exe.config手動複製到A的文件夾,但我敢打賭有一些自動的方法來做到這一點。有人能幫助我嗎?

+0

A.exe如何啓動B.exe?如果你不在代碼中使用它,請不要參考。製作後期構建腳本(或其他),將其複製到正確的文件夾。通常,每個appdomain只有一個.config文件,這就是爲什麼它不被複制的原因.B引用時(這不是自動進程),B的配置應該在A.exe.config中。 – albertjan 2012-04-04 14:31:49

+0

@the_ajp感謝您的回覆。我確實在代碼中啓動了B.exe,原因有兩個:1)A.exe是64位應用程序,B.exe是32位,所以A.exe不能將B加載到它的應用程序域中。 2)我希望B.exe在A.exe存在時被殺死。那麼你認爲後期構建腳本是否是最佳做法? – tete 2012-04-05 06:54:49

回答

-1

您的應用程序目錄中不能有2個app.configs。
默認情況下,Visual Studio將使用啓動項目的app.config。
您可以創建一個後期構建事件觸發器,您可以在其中複製app.config,但這會替換原始的app.config(我猜測它包含您需要的數據)。

除了創建乾淨的dll +項目體系結構之外,最好的方法是手動將項目A的所有配置數據合併到項目B的配置數據中。

+0

它不會覆蓋app.config,因爲b.exe的app.config將被稱爲b.exe.config而不是a.exe.config。而你基本上覆制了我的評論:(。我沒有作爲答案發布,因爲我們還不知道如何使用b.exe。 – albertjan 2012-04-04 14:39:56

+0

在我提交之前沒有刷新頁面,但我可以向你保證我沒有提交剽竊,我發佈了它作爲答案,因爲我覺得合併2個app.configs可以解決他的問題。 – Kristof 2012-04-04 14:52:21

+0

好吧:)嘿嘿。它會和什麼時候不是後構建事件。 – albertjan 2012-04-04 14:53:53

5

可以使用後生成事件,或...

在項目A,添加鏈接引用B.exe.config。您可以通過向項目添加現有項目來實現此目的。但是,在按下文件對話框上的添加按鈕之前,按下添加按鈕右側的向下箭頭並選擇「添加爲鏈接」。然後,將該文件設置爲複製到輸出目錄。在您的項目文件,它會是這個樣子:

從ProjectA.csproj:

​​

如果你不介意手動編輯您的項目文件中,包含的文件可以取決於生成配置。以下作品構建(雖然VS2013將無法打開該文件,當您在項目樹中雙擊圖標。)

<None Include="..\ProjectB\bin\$(Configuration)\B.exe.config"> 
    <Link>B.exe.config</Link> 
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
</None> 
+0

你碰巧有什麼想法,爲什麼這種方法可能不適用於團隊基礎構建服務器 – pquest 2016-05-03 18:37:41

+0

@請求我不知道,但我有另一個數據點給你。我剛剛使用VS 2015和VisualStudio.com帳戶與TFS 2015進行了測試。它工作正常。在日誌中,我可以看到它「將文件從ProjectB \ bin \ Release \ ProjectB.exe.config複製到ProjectA \ bin \ Release \ ProjectB.exe.config」,然後「從ProjectA \ bin \ Release \ ProjectB.exe複製」 .config添加到drop文件夾中。我在配置文件的鏈接中使用了$(Configuration)變量。 – Wally 2016-05-06 16:11:50

5

一個更簡單的解決辦法是簡單地包括在的csproj文件以下。這包括所引用文件的匹配文件擴展名。

<PropertyGroup> 
    <AllowedReferenceRelatedFileExtensions> 
     .pdb; 
     .xml; 
     .exe.config; 
     .dll.config 
    </AllowedReferenceRelatedFileExtensions> 
    </PropertyGroup> 
+0

AllowedReferenceRelatedFileExtensions not recognized – Loaderon 2016-09-30 15:24:16

相關問題