「なし」の出力タイプでVisual Studioプロジェクトを作成できますか?

StackOverflow https://stackoverflow.com/questions/1434629

質問

私はVisual Studio 2008を使用しており、ソリューションと共にインストールする必要のある多数のDLLを保持する一種のコンテナープロジェクトを作成したいと考えています。グループとしてソリューションに簡単にアタッチできるように、それらを別のプロジェクトに入れたいです。

空のプロジェクトコールTESTを作成し、" Content"のビルドアクションでDLLを追加し、" Copy Always"に設定しました。それはすべて私が望むとおりに動作します。問題は、TESTプロジェクトの出力タイプを「コンソールアプリケーション」に設定すると、または「Windowsアプリケーション」エントリポイントがないため、ビルドされません。出力タイプを" Class Library"に設定すると、ビルドされますが、実際には不要な余分なTEST.DLLファイルが作成されます。

とにかく出力タイプを「なし」に設定するソートはありますか?ビルドアクションを実行したいので(DLLがコピーされます)、ダミークラスアセンブリを作成したくありません。アイデアはありますか?

ありがとう!

役に立ちましたか?

解決

次のステップバイステップガイドの前提:

2つのプロジェクトを含むソリューションがあると仮定します。

  • Main :メイン(スタートアップ)プロジェクト。
  • BundledDLLs :メインプロジェクトの出力ディレクトリに配置される .dll を含むライブラリプロジェクト。

ステップバイステップガイド:

Visual Studio内で目標を達成する最も簡単な方法は、おそらく次のとおりです。

  1. すべての .dll BundledDLLs に追加し、出力ディレクトリにコピー新しい

    これは、 Project Explorer および Properties ウィンドウで実行されます。

  2. BundledDLLs の出力ディレクトリを Main の出力ディレクトリと同一に設定します。

    これは、 BundledDLL プロジェクトプロパティページのビルドタブで実行できます。 出力パステキストボックスに次のようなものを入力します。

    ..\Main\bin\Debug
    
  3. Maind の依存関係として BundledDLLs を設定します。

    通常は Main へのプロジェクト参照として BundledDLLs

    追加しないでください。代わりに、プロジェクトの依存関係ダイアログを使用してください。これにより、ビルドツールに、 Main がビルドされるたびに、 BundledDLLs を最初にビルドする必要があることが通知されます。

    これを行うには、 Main プロジェクトノードを右クリックしてコンテキストメニューを開きます。そこからプロジェクトの依存関係... を選択します。開いたダイアログで、最初にドロップダウンリストから Main を選択します。次に、以下のプロジェクトリストで BundledDLLs を確認します。 BundledDLLs Main の依存関係として登録されるようになりました。

      

    PS: Main に明示的なアセンブリ参照がない の欠点の1つは、一部のツールが依存関係を認識しない可能性があることです。たとえば、ClickOnceの展開が適切に機能しない場合があります。

  4. 余分な BundledDLLs.dll を削除するビルド後イベントを BundledDLLs に追加します。

    おっしゃるように、 BundledDLLs がビルドされたときに生成されるダミー出力は不要であり、必要ありません。したがって、作成された .dll を削除するビルド後イベントを追加します。

    BundledDLLs プロジェクトプロパティページでビルドイベントタブを開き、ビルド後のテキストボックスに次のようなものを入力します。

    DEL "$(TargetDir)\$(TargetName).*"
    

    (疑問に思った場合:このプロジェクトを以前に Main へのプロジェクト参照として追加しなかった理由は、もしそうしたら Main BundledDLLs.dll を探していますが、実際にはそのようなファイルを生成したくないので、見つけることができません。)

      

    PS:このようなビルド後の手順を追加することの1つの欠点は、インクリメンタルビルドを妨げる可能性があることです。この後もプロジェクトをゼロから再コンパイルし続ける場合は、ビルド後の手順を削除して、ソリューションの出力ディレクトリにある余分な BundledDLLs.dll を使用する方がよい場合があります。

他のヒント

もう1つのオプションは、メイクファイルプロジェクトを使用することです。このプロジェクトでは、ビルド/リンクする必要はありません。

プロジェクトプロパティ(ソリューションエクスプローラーでプロパティを右クリックし、[プロパティ]をクリック)で、[構成プロパティ]の下にある[そして、「一般」の下で、「Makefile」を選択します。 「構成タイプ」からドロップダウンメニュー。ビルド出力には、警告「"プロパティ「NMakeBuildCommandLine」は存在しません...スキップ"」が含まれます。ただし、dll / exe / etcをビルドせずにビルドは成功します。

ここでの他の回答は特定のニーズによりよく対応できますが、メイクタイトルを指定することで質問のタイトルに「直接出力タイプなしでVisual Studioプロジェクトを作成できますか?」これがそのために何かをグーグルしてここに着陸する人々に役立つことを願っています。

クレジットは、このヒントを共有するために#winapi freenode ircチャネルでXeekに送信されます。

プロジェクトに配置する代わりに、ソリューションフォルダー。プロジェクトの1つに、コピーを実行するビルドアクションを含めることができますが、プロジェクトに含まれないため、「ビルド」しようとしません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top