Visual Studio中针对调试和发布版本的不同构建操作

6
我有一个使用插件架构的C# Visual Studio解决方案。当构建调试版本时,我希望将一些插件编译到主应用程序中。当构建发布版本时,我希望这些.cs文件保持不变。
是否有一种方法可以为调试和发布版本的插件文件指定不同的构建操作?我希望在调试构建中设置为“编译”,在发布构建中设置为“无”。
2个回答

10
为此,您需要手动更改 .csproj 文件,并在对应于您只想要进行调试生成的文件的 Compile XML 元素中添加一个 Condition XML 属性。示例如下:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
      ...
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
      ...
  </PropertyGroup>
  <ItemGroup>
    <!-- Add the Condition attribute here, on each of your debug only files
    Pick up one of the configuration definition configuration above -->
    <Compile Include="DebugOnlyClass1.cs" Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "/>
    <!-- normal compilation -->
    <Compile Include="Class1.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
     ...
</Project>

5

由于插件通常是在单独的程序集中,因此我将为每个插件创建一个单独的项目。

对于项目,您可以定义是否在配置中进行构建:在Visual Studio中打开“配置管理器”(菜单生成)。在左上角的组合框中选择“发布”“调试”配置,并在列表中任意设置“构建”复选框。

编辑:否则,您必须手动编辑.csproj文件,并向要排除的项添加条件属性:

<Compile Condition="'$(Configuration)' == 'Debug'" Include="Program.cs" />

@Simon:没有,甚至没有受到启发。虽然我必须承认措辞相当相似。 - Stephan
@SimonMourier 是的,但是在你回答后30秒 - 我相信那只是巧合。 - ANeves

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