vb.net - 在 Visual Studio 中使用自动构建进行条件编译

标签 vb.net visual-studio-2005 msbuild build-automation

这就是我正在尝试做的事情:

  • 单个构建脚本
  • 该脚本从同一个 Visual Studio 项目构建两个可执行文件。
  • 第一个编译的 .exe 有少量代码已禁用
  • 另一个编译的 .exe 已启用所有内容。

我一直在阅读conditional compilation就启用/禁用代码块而言,这可以满足我的需求。

我只是不知道如何使用 msbuild 从构建脚本控制条件编译。

有没有办法从构建脚本或其他方式操纵条件编译变量来完成我想要做的事情?

最佳答案

在项目文件中使用构建配置。在根据配置选择性包含的 PropertyGroup 中设置参数。然后,该配置还可以定义程序集的两个不同版本的输出路径。

对于需要删除某些代码的版本,请使用包含 PropertyGroup 的配置。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'CompiledOutDebug|AnyCPU' ">
   <DefineConstants>$(DefineConstants);MY_CONDITIONAL_COMPILATION_CONSTANT</DefineConstants>
</PropertyGroup>

然后使用 MSBuild 脚本调用项目 MSBuild 脚本两次,并使用 MSBuild 任务的 Properties 属性来指定要生成的配置:

<Target Name="Build">
    <MSBuild Projects="MyProject.csproj;" 
             Targets="Build" 
             Properties="Configuration=Release" />
    <MSBuild Projects="MyProject.csproj"
             Targets="Build"
             Properties="Configuration=CompiledOutDebug" />
  </Target>

关于vb.net - 在 Visual Studio 中使用自动构建进行条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/559881/

相关文章:

c - 如何为 Visual Studio 2005 安装 pthread_win32(Windows pthread/posix 线程库)?

asp.net-core - <EnableDefaultContentItems> 启用哪些内容项?

c# - .Net 自定义 TraceListener.TraceEvent 未触发

vb.net - 如何获取数组中VB.net(VS08)项目中的所有表单?

vb.net - DateTime.ToLocalTime() 于 2013 年 8 月停止在 XP 上工作

c++ - 如何在项目中实现预编译头文件

msbuild - 在 "BeforeBuild"目标之前捕获的程序集版本

c# - 使用 ASP.NET MasterPage 时按正确顺序加载表

c# - 如何在 ASP.NET MVC 的 Controller 中获取传入的 InputStream

visual-studio - 是否允许在禁用 rtti 的应用程序中链接启用 rtti 的 DLL?