「なし」の出力タイプでVisual Studioプロジェクトを作成できますか?
-
07-07-2019 - |
質問
私はVisual Studio 2008を使用しており、ソリューションと共にインストールする必要のある多数のDLLを保持する一種のコンテナープロジェクトを作成したいと考えています。グループとしてソリューションに簡単にアタッチできるように、それらを別のプロジェクトに入れたいです。
空のプロジェクトコールTESTを作成し、" Content"のビルドアクションでDLLを追加し、" Copy Always"に設定しました。それはすべて私が望むとおりに動作します。問題は、TESTプロジェクトの出力タイプを「コンソールアプリケーション」に設定すると、または「Windowsアプリケーション」エントリポイントがないため、ビルドされません。出力タイプを" Class Library"に設定すると、ビルドされますが、実際には不要な余分なTEST.DLLファイルが作成されます。
とにかく出力タイプを「なし」に設定するソートはありますか?ビルドアクションを実行したいので(DLLがコピーされます)、ダミークラスアセンブリを作成したくありません。アイデアはありますか?
ありがとう!
解決
次のステップバイステップガイドの前提:
2つのプロジェクトを含むソリューションがあると仮定します。
-
Main
:メイン(スタートアップ)プロジェクト。 -
BundledDLLs
:メインプロジェクトの出力ディレクトリに配置される.dll
を含むライブラリプロジェクト。
ステップバイステップガイド:
Visual Studio内で目標を達成する最も簡単な方法は、おそらく次のとおりです。
-
すべての
.dll
をBundledDLLs
に追加し、出力ディレクトリにコピーを新しい。これは、 Project Explorer および Properties ウィンドウで実行されます。
-
BundledDLLs
の出力ディレクトリをMain
の出力ディレクトリと同一に設定します。これは、
BundledDLL
のプロジェクトプロパティページのビルドタブで実行できます。 出力パステキストボックスに次のようなものを入力します。..\Main\bin\Debug
-
Maind
の依存関係としてBundledDLLs
を設定します。Main
へのプロジェクト参照としてBundledDLLs
を追加しないでください。代わりに、プロジェクトの依存関係ダイアログを使用してください。これにより、ビルドツールに、
Main
がビルドされるたびに、BundledDLLs
を最初にビルドする必要があることが通知されます。これを行うには、
Main
プロジェクトノードを右クリックしてコンテキストメニューを開きます。そこからプロジェクトの依存関係... を選択します。開いたダイアログで、最初にドロップダウンリストからMain
を選択します。次に、以下のプロジェクトリストでBundledDLLs
を確認します。BundledDLLs
はMain
の依存関係として登録されるようになりました。PS:
Main
に明示的なアセンブリ参照がない の欠点の1つは、一部のツールが依存関係を認識しない可能性があることです。たとえば、ClickOnceの展開が適切に機能しない場合があります。 -
余分な
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つに、コピーを実行するビルドアクションを含めることができますが、プロジェクトに含まれないため、「ビルド」しようとしません。