簡體   English   中英

msbuild正在重命名Web.config

[英]Web.config is being renamed by msbuild

我正在使用VS 2013來構建Web服務。 構建時,Web.config文件將重命名為“{projectname} .dll.config”。

有一個步驟_CopyAppConfigFile,它被重命名,顯示在Output窗口中。 我可以解決這個問題,通過設置web.config總是被復制,這會產生兩個文件,web.config和x.dll.config,我可以忍受,但我想完全避免它,如果有人知道怎么做。

編輯:看起來這是MSBuild文件的結果,位於:

C:\Program Files\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets

我可以在C#ASP.NET MVC項目中的Visual Studio 2013的默認安裝中重新創建它。 我注意到它是因為我開始轉換到Visual Studio 2013,但我們的構建服務器仍在Visual Studio 2012上; 我的設置項目在我的一次提交后失敗了,因為我在我的機器上收獲的多余的配置文件沒有在構建服務器上生成。

這似乎是在以前版本的MSBuild 4.0 / Visual Studio 2012和新版本的MSBuild 12.0 / Visual Studio 2013中工作方式之間的差異。

在Visual Studio 2013中, $(ProjectConfigFileName)屬性初始化為Web.config [1],它被復制到$(AppConfig) [2],導致_CopyAppConfigFile運行[3],從而導致一個不必要的配置文件被命名並復制到bin目錄。

在Visual Studio 2012中,該過程類似,但其版本的Microsoft.WebApplication.targets缺少此版本的2013版本:

  <!-- Instruct ResolveAssemblyReferences in MS.Common.targets to generate suggested binding redirects. -->
  <PropertyGroup>
        <AutoUnifyAssemblyReferences>false</AutoUnifyAssemblyReferences>
        <AppConfig Condition="'$(AppConfig)' == '' And Exists('$(ProjectConfigFileName)')">$(ProjectConfigFileName)</AppConfig>
  </PropertyGroup>

關鍵是AppConfig行。 由於2012版本中缺少該AppConfig引用,因此_CopyAppConfigFile不會在Visual Studio 2012下運行,從而導致預期的行為(即,不復制該文件)。

在Visual Studio 2013中,看起來他們添加了這一行,以便構建過程可以通過在Visual Studio的“錯誤”列表中雙擊它們來修復綁定重定向。 當微軟添加這個時,似乎沒有人注意到它導致生成額外的配置文件並將其復制到輸出文件夾。 所以在我看來,在Visual Studio 2013的新構建過程中,好像它是一個bug(但是一個無害的,因為配置文件是多余的)。因為它與我的構建服務器上的Visual Studio 2012構建過程相沖突,我添加了一個額外的后期構建步驟來吹掉無關的文件:

  <Target Name="AfterBuild">
        <Delete ContinueOnError="true" Files="$(TargetPath).config" />
  </Target>

然后,您可以感覺更好,因為您知道它不是您的特定項目或系統設置的問題,它只是Visual Studio 2013現在所做的事情。


上面引用的文件位置:

[1] C:\\ Program Files(x86)\\ MSBuild \\ Microsoft \\ VisualStudio \\ v12.0 \\ Web \\ Microsoft.Web.Publishing.targets

[2] C:\\ Program Files(x86)\\ MSBuild \\ Microsoft \\ VisualStudio \\ v12.0 \\ WebApplications \\ Microsoft.WebApplication.targets

[3] C:\\ Program Files(x86)\\ MSBuild \\ 12.0 \\ Bin \\ Microsoft.Common.CurrentVersion.targets

我認為你有錯誤的項目類型。 您是否將其創建為Web項目? 這是在你的csproj文件中嗎?

{349c5851-65df-11DA-9384-00065b846f21}; {fae04ec0-301f-11D3-bf4b-00c04f79efbc}

來自http://www.mztools.com/articles/2008/mz2008017.aspx

349c5851-65df-11da-9384-00065b846f21 = Web應用程序fae04ec0-301f-11d3-bf4b-00c04f79efbc = C#Project

Hth,Ojf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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