2016-08-18 29 views
0

我有一個ASP.NET項目,輸出一個類庫,然後部署到IIS的dll。按照標準構建一個配置文件也會與dll一起作爲xxx.dll.config輸出,並且它包含許多有用的環境變量,如連接字符串(即符合應用程序設置體系結構要求)。web.config不是app.config發佈到xxx.dll.config在Visual Studio 2015

在VS 2012中,xxx.dll.config文件的內容來源於項目根目錄下的app.config。

在VS 2015中看起來xxx.dll.config的內容來源於項目根目錄下的web.config。

重現步驟:

  1. 創建VS2015一個ASP.NET應用程序。
  2. 在此應用程序中添加一個app.config文件。
  3. 構建此應用程序。
  4. 打開bin文件夾,找到application.dll.config文件並將其打開。內容與Web.config相同。
  5. 在Visual Studio 2012中執行與步驟1到步驟4相同的操作,其內容與App.config相同。

這使我有點頭痛,因爲我依靠app.config來爲我的功能測試保存變量(連接字符串,auth提供程序),而web.config爲變爲部署的代碼保存變量。

我對AppDomain及其配置變量所做的大部分閱讀似乎表明,除非明確指示,否則Web.config不應該考慮構建輸出,即使如此,它也不容易轉換Web。配置文件,永遠不會有它最終作爲xxx.dll.config文件。

我可以重寫我的測試裝置,直接從測試中設置環境變量,但對於像ASP.Identity這樣的需要編寫相當多的新類來加載RoleManager以及我想避免的關聯提供程序的東西。

如果任何人都可以建議如何設計VS編譯來輸出配置文件,該配置文件很容易被程序集使用,並且通過nunit runner或Resharper運行nunit測試會很棒。

+0

相反,你可以在你的源代碼控制添加新文件* .dll.config並複製你想要的條目該文件。這應該可以解決問題。 – loneshark99

回答

0

到Visual Studio 2015年的原始行爲恢復到什麼,我已經習慣了在Visual Studio 2012我添加了一個後生成事件:

  1. 轉到項目 - >屬性
  2. 選擇生成事件
  3. 以下添加到 「生成後事件命令行」:

    複製/ Y 「$(PROJECTDIR)\ App.config中」, 「$(TARGETDIR)\ $(的TargetName).dll.config」

的.dll.config現在是再次App.config中,而不是Web.config文件

相關問題