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