每个 Visual Studio 配置包含/排除文件

Posted

技术标签:

【中文标题】每个 Visual Studio 配置包含/排除文件【英文标题】:Include/Exclude files per visual studio configuration 【发布时间】:2015-03-19 20:34:53 【问题描述】:

我在一个 Visual Studio 项目中有多个文件夹。我也有这个项目的相同数量的配置。 (一个代码库运行多个站点)。

我只希望每个配置包含一个文件夹。

现在,每个配置都包含每个文件夹。然后,我必须在构建后手动删除额外的文件夹(如果我选择的话)。

这也会减慢我们的持续集成构建速度,因为它必须处理所有额外的文件。

这无法通过“从项目中排除”/“包含在项目中”上下文菜单项来实现。这将把它从整个项目中完全删除。

我需要某些文件夹仅用于某些配置。

X 代码(ios 开发)通过使用“目标成员资格”来处理此问题...您可以告诉某个文件仅包含在某个目标中。

尝试在 VS 中做同样的事情。

请帮忙!!

【问题讨论】:

你的意思是这样的? ***.com/questions/2370353/… 【参考方案1】:

您必须手动编辑 .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>

我可能会补充一点,可能有更好的方法来完成您正在做的事情。也许使用配置转换(也许不同的配置指定要用于您的环境的类的名称),但无论哪种方式,上面的示例肯定会完成您的要求。

【讨论】:

谢谢!为每个文件夹使用了一个通配符,它​​似乎正在工作!

以上是关于每个 Visual Studio 配置包含/排除文件的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017 csproj 核心文件排除

如何从Visual Studio中排除文件编译?

从Visual Studio 2015出版物中排除文件夹

Visual Studio Code 1.73发布!

在Visual Studio 2010中从生成中排除moc-ed文件

我想用 CMake 生成和编译 Visual Studio 项目我需要从构建中排除单元测试文件。有没有办法做到这一点?