Изменение имени EXE на основе константы компиляции - PullRequest
2 голосов
/ 21 сентября 2011

У меня есть проект в VB.NET 2010 (компиляция в x86, .NET 2.0 runtime), который я хочу скомпилировать в два отдельных EXE-файла - «облегченная» версия и «полная» версия.

К сожалению, я не могу сделать два отдельных проекта, так как он использует COM-элемент управления Adobe Reader - и совместное использование формы с помощью этого элемента управления между двумя проектами, похоже, сбивает с толку IDE (я полагаю, что-то связанное с COM Interop), если кто-тознает, как разделить форму, содержащую элемент управления Adobe Reader, что также решит мою проблему).

Я нашел эту тему: Изменить имя exe в зависимости от условного символа компиляции однако я не наденуУ меня нет опыта работы с MSBuild, поэтому мне нужны более четкие инструкции.

На вкладке «Мой проект> Компиляция» есть кнопка «Создать события ...».Мне было интересно, если кто-нибудь знает, как установить константу условной компиляции и использовать ее для определения имени EXE (или изменить его после сборки).

Если ничего не помогает, я могу переименовать EXE-файл вручную, но я предпочел бы, чтобы он был автоматизирован.

1 Ответ

1 голос
/ 29 сентября 2011

Если наличие двух отдельных проектов в вашем решении неприемлемо, вам стоит заняться созданием собственного скрипта MSBuild.

Ниже приведен пример пользовательского сценария MSBuild, который позволит вам определить свои пользовательские константы компиляции во время сборки, а затем собрать две версии вашего приложения («Полная» и «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
...