【问题标题】:Changing EXE name based on compilation constant根据编译常量更改 EXE 名称
【发布时间】:2011-09-21 01:33:12
【问题描述】:

我在 VB.NET 2010 中有一个项目(编译到 x86,.NET 2.0 运行时),我想编译成两个单独的 EXE - 一个“精简”版本和一个“完整”版本。

不幸的是,我无法创建两个单独的项目,因为它使用 Adob​​e Reader COM 控件 - 并且在两个项目之间使用该控件共享表单似乎会使 IDE 感到困惑(我认为这与 COM 互操作有关 - 如果有人知道如何共享一个托管 adobe reader 控件的表单,这也可以解决我的问题。

我找到了这个帖子: Change name of exe depending on conditional compilation symbol 但是我没有任何 MSBuild 经验,所以我需要更明确的说明。

在“我的项目>编译”选项卡上有一个“构建事件...”按钮。我想知道是否有人知道如何设置条件编译常量并使用它来确定 EXE 名称(或在构建后更改它)。

如果一切都失败了,我想我可以手动重命名 EXE,但我希望它是自动化的。

【问题讨论】:

    标签: vb.net msbuild adobe-reader


    【解决方案1】:

    如果您的解决方案中不能有两个单独的项目,您需要考虑创建自己的 MSBuild 脚本。

    这是一个自定义 MSBuild 脚本的示例,它允许您在构建时定义自定义编译常量,然后构建您的应用程序的两个版本(“Full”和“Lite”):

    <Project DefaultTargets="BuildAll" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <BuildVersionFull>FULL</BuildVersionFull>
        <BuildVersionLite>LITE</BuildVersionLite>
      </PropertyGroup>
      <ItemGroup>
        <Projects Include="$(MSBuildProjectDirectory)\MyApp.vbproj" />
      </ItemGroup>
      <Target Name="BuildAll" DependsOnTargets="BuildFull;BuildLite" />
      <Target Name="BuildFull">
        <MSBuild Projects="@(Projects)" Properties="DefineConstants=$(BuildVersionFull);OutputPath=binFull\;BaseIntermediateOutputPath=objFull\;AssemblyName=MyApp_Full" />
      </Target>
      <Target Name="BuildLite">
        <MSBuild Projects="@(Projects)"  Properties="DefineConstants=$(BuildVersionLite);OutputPath=binLite\;BaseIntermediateOutputPath=objLite\;AssemblyName=MyApp_Lite" />
      </Target>
    </Project>
    

    你需要做什么:

    1. 创建一个新文件并将其保存在与应用程序的项目文件相同的目录中,并保存为“MyBuild.xml”。
    2. 更改以反映应用程序项目文件的名称。
    3. 打开 Visual Studio 命令提示符并运行“msbuild”。

    在您的项目中,您可以使用“FULL”和“LITE”条件编译常量来确定是否编译某些语句:

    #If FULL Then
        ' Compile code for the "Full" version.
    #End If
    

    【讨论】:

    猜你喜欢
    • 2011-02-20
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    相关资源
    最近更新 更多