0

我想要的.csproj文件中不必要的更改自動檢測web.configs在我的Web應用程序項目文件中的一個變換預增事件的一部分,這一代碼進入上一級文件夾從我的項目文件並獲取每個目錄和子目錄的所有web.configs:在構建

<ItemGroup> 
    <WebConfigsRelativePath Include ="..\**\Web.config"/> 
</ItemGroup> 

這個偉大的工程,但每次我建立並退出Visual Studio中,我得到一個提示,詢問我是否要保存到我的解決方案文件所做的更改。如果我選擇是,打開該項目文件,上面的代碼更改爲每個web.config中

<ItemGroup> 
    <WebConfigsRelativePath Include="..\Web\Decade\Web.config" /> 
    <WebConfigsRelativePath Include="..\Web\Matrix\RiskAnalysis\Web.config" /> 
    <WebConfigsRelativePath Include="..\Web\Service\Web.config" /> 
    <WebConfigsRelativePath Include="..\Web\Web.config" /> 
</ItemGroup> 

這將是罰款,但整體理性的位置,我自動檢測web.configs預構建是這樣我可以添加和刪除web.configs而不必硬編碼他們的位置,每次我退出VS,位置將硬編碼在項目文件中....

有沒有人知道爲什麼這個ItemGroup每次退出Visual Studio時都會更改?

+1

這實際上是一樣的問題http://stackoverflow.com/questions/21583437/how-do-i-prevent-visual-studio-2012-from-expanding-an-msbuild-4-wildcard – stijn

回答

0

雖然我無法解釋爲什麼VS決定輸出由我的每一個解決方案建立時間通配符檢索到的文件列表,我可以告訴你我解決此問題如何得到:

<PropertyGroup> 
    <WebConfigsSearchString>..\**\Web.config</WebConfigsSearchString> 
</PropertyGroup> 

<ItemGroup> 
    <WebConfigsRelativePath Include ="$(WebConfigsSearchString)"/> 
</ItemGroup> 

通過定義在屬性搜索字符串(始終保持靜態)和引用文件中的項目組的列表中的屬性包括,項目組代碼絕不會被修改,但在web.config搜索每一個構建運行

時間進行
1

如果我在現有Web項目中使用<Content />而不是樣本中的自定義<WebConfigsRelativePath />,那麼我會看到預期的行爲。

嘗試使用這樣的:

<Content Include="..\**\Web.config"> 
    <SubType>Designer</SubType> 
</Content> 

編輯:

如果您對WebConfigsRelativePath項目組特殊處理,後在更新了自己的問題。

+0

感謝您的回答,但我不完全確定如果我使用您的解決方案,我將如何獲取參考文件列表 – ShaneC