2

VB.NET 2010(x86、.NET 2.0ランタイムにコンパイル)に、「ライト」バージョンと「フル」バージョンの2つの別々のEXEにコンパイルしたいプロジェクトがあります。

残念ながら、Adobe Reader COMコントロールを使用しているため、2つの別々のプロジェクトを作成することはできません。2つのプロジェクト間でそのコントロールを使用してフォームを共有すると、IDEが混乱するようです(COM相互運用機能と関係があると思います)。誰かがフォームを共有する方法を知っている場合Adobe Readerコントロールをホストすると、私の問題も解決します)。

私はこのスレッドを見つけました: 条件付きコンパイルシンボルに応じてexeの名前を変更しますが、MSBuildの経験がないため、より明示的な指示が必要です。

[マイプロジェクト]>[コンパイル]タブには、[イベントのビルド...]ボタンがあります。条件付きコンパイル定数を設定し、それを使用してEXE名を決定する(またはビルド後に変更する)方法を誰かが知っているかどうか疑問に思いました。

他のすべてが失敗した場合は、EXEの名前を手動で変更できると思いますが、自動化することをお勧めします。

4

1 に答える 1

1

ソリューション内に2つの別々のプロジェクトを含めることが受け入れられない場合は、独自のMSBuildスクリプトの作成を検討することをお勧めします。

これは、ビルド時にカスタムコンパイル定数を定義してから、アプリケーションの2つのバージョン(「フル」と「ライト」)をビルドできるカスタムMSBuildスクリプトの例です。

<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-09-28T23:33:06.873 に答える