根据Visual Studio配置包含/排除文件

8
我在Visual Studio项目中有多个文件夹,同时也有相同数量的配置(一个代码库运行多个站点)。
我只想每个配置中包含一个文件夹。
现在,每个配置都包括了所有文件夹。然后,在生成后我必须手动删除额外的文件夹(如果需要的话)。
这也会减慢我们的持续集成构建速度,因为还要处理所有额外的文件。
通过右键菜单中的“从项目中排除”/“包括到项目中”无法实现此目标。那样会完全将它从整个项目中移除。
我需要某些文件夹仅包含在特定的配置中。
在X Code(iOS开发)中使用“目标成员资格”来处理此问题......您可以告诉某个文件只包含在特定的目标中。
我正在尝试在VS中实现相同的效果。
请帮助!!

你的意思是这样的吗?https://dev59.com/kUzSa4cB1Zd3GeqPllOe - Michael B.
1个回答

20

您需要手动编辑.csproj文件,这实际上只是一个MSBUILD文件。(右键单击,在记事本或其他文本编辑器中打开)

这里有一个例子。我复制了默认的Program.cs,并创建了一个DEBUG版本和一个RELEASE版本。

在正常情况下,构建此项目时会出现错误,因为我定义了相同的类两次。

但是在按照以下方式编辑.csproj文件后,它们现在会根据所选配置独立构建。

  <ItemGroup>
    <Compile Include="DebugFiles\ProgramForDebug.cs" Condition=" '$(Configuration)' == 'Debug' "/>
    <Compile Include="ReleaseFiles\ProgramForRelease.cs"  Condition=" '$(Configuration)' == 'Release' "/>
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>

我可以补充一下,可能有更好的方法来完成你所做的事情。也许可以使用配置转换(也许不同的配置指定用于您的环境的类的名称),但无论如何,上面的示例肯定会实现你所问的内容。


1
谢谢!对于每个文件夹使用了通配符,看起来它好像可以工作了! <Content Include="_templates\TemplateName\**" Condition=" '$(Configuration)' == 'ConfigName' " /> - tcarter2005

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接