2011-05-07 88 views

回答

1

在Visual Studio中,當您打開活動文件時會出現'屬性'部分。對於App.config中,它有一個叫Copy to Output Directory屬性,選項有

  • Do Not Copy
  • Copy if Newer
  • Copy Always

你想第二個或第三個選項。

+6

但這些選項是在當前的解決方案,以進入bin目錄中的項目文件;而不是您可能使用Add Reference選項引用的外部dll。 – 2011-05-07 02:47:27

1

對於默認的CLR主機,只有一個EXE可以有一個.config文件。不是DLL。複製.dll.config文件應該毫無意義,除非您明確地打開並解析文件。在這種情況下,您應該使用不同的名稱以避免混淆。

+0

爲什麼我沒有dll的配置文件?那有什麼問題?正如你可能知道ASP.NET網站被編譯成dll。你是說web配置不存在嗎? – oleksii 2011-05-07 07:21:55

+0

問題是它不被支持。 ASP.NET是一個不同的CLR主機,它有不同的規則。 – 2011-05-07 09:44:09

1

我有同樣的問題。 屬性不會幫助您將app.config複製到需要的位置。比如你什麼時候做整合單元測試。然後,你可以有兩種選擇:

  1. 使用後生成事件

    複製/ Y「$(PROJECTDIR)的App.config」「.... \測試\調試\ $(TargetFileName)。配置」

  2. 手動配置文件部分從libA.dll複製到libA.Test.dll

我最終使用2,因爲它被證明是更健壯的我。

3

將dll項目中的app.config重命名爲[dllname] .dll.config。將相同文件的屬性更改爲「始終複製」並重建。對我很好。我也嘗試通過VS中的Settings對話框添加另一個設置,即使它不是app.config,它也會更新。順便說一句,使用VS2013更新3.

做類似的事情的另一種方法是創建一個硬鏈接文件與項目文件夾中的[dllname] .dll.config並更改其屬性,以「永遠複製」的方式你仍然有你的app.config正常,但如果你更新它,它也會更新你的[dllname] .dll.config文件。唯一真正的警告是,當你檢入像TFS這樣的源代碼控制時,它可能無法跟蹤硬鏈接,並且你可能會意外地覆蓋鏈接。但是,當您「添加和現有項目」作爲鏈接時,它會再次確認鏈接,因此它可能會或可能不適合您的情況。你決定。

1

雖然我遲到了,但我的回答可以幫助別人。我使用以下命令作爲預生成事件:

copy /Y $(SolutionDir)\[YOUR_LIBRARY_PROJECT]\app.config $(ProjectDir)$(OutputPath)[YOUR_LIBRARY_NAME].dll.config

我試圖儘可能地保持動態,並且上述命令奏效。

2

有一個在下面的帖子一個更好的答案:

Visual Studio/MSBuild copy referenced class library's app.config as *.dll.config to bin folder of current project

// Add this <ItemGroup> at the end of your .csproj file before </Project> and after <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
<ItemGroup> 
    <Content Include="app.config"> 
     <Link>$(TargetName).dll.config</Link> 
     <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 
    </Content> 
</ItemGroup> 
+1

我還沒有嘗試過這個,但是如果你想在緩慢獵豹的部署上轉換文件,它似乎會出現問題。 – emragins 2017-03-22 23:35:22

相關問題