2011-07-28 20 views
5

プロジェクトの構成に応じて、WinExeまたはLibraryとしてC#プロジェクトをビルドする必要があります。プロジェクト構成に基づいてcsproj OutputTypeを変更する

<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> <OutputType>WinExe</OutputType> </PropertyGroup>

:条件PropertyGroupで

<OutputType Condition=" '$(Configuration)' == 'Release' ">WinExe</OutputType> <OutputType Condition=" '$(Configuration)' == 'Debug' ">Library</OutputType>

2):

1)一般PropertyGroupにおいて:

ノー運と、これらの方法の両方を試しました

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <OutputType>Library</OutputType> </PropertyGroup>

これらのメソッドはどちらも動作せず、OutputTypeは常にWinExeです。奇妙なことは、WinExeのすべてのインスタンスをLibraryに変更すると、それは常にLibraryです。これは、私がそれを正常に読んでいると思っていますが、奇妙な順序で、またはWinExeがライブラリよりも優先されるようにしています。

アイデア?

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    <OutputType>Library</OutputType> 
    <!-- Other properties go here --> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> 
    <OutputType>Exe</OutputType> 
    <!-- Other properties go here --> 
</PropertyGroup> 

これら二つの条件PropertyGroupセクションにあなたのOutputType要素を追加し、あなたが他のすべてのOutputTypeを削除することを確認してください:あなたは少し、このように見える二つのセクションがありますあなたの.csprojファイルの先頭で

+1

あなたのOutputType宣言が他のものの後に現れて、それを上書きする限り、上記のものがうまくいくはずです。しかし、$(OutputType)の値に基づいた追加のプロパティを含むインポートステートメントの前にも存在する必要があります –

+0

これはVSで動作するようにしたいのですか、コマンドラインでのみOKですか? –

答えて

7

要素 - 私はちょうどそれをテストしたし、まさにあなたが求めているものです。

はいこれはあなたがすでに行ったことと非常に似ていますが、私はちょうどそれを試したので上記の方法が働くことを知っています - 私の唯一の推測は、あなたのビルドのどこか他のものが物事を乱す。

+0

ああ、私たちがしたことはうまくいくようです。ビジュアルスタジオはそれを間違って報告しますが、実際には正しい出力タイプを作成します。 –

関連する問題