共有プロジェクトについて読むことに非常に興奮していたので、MSDNサブスクリプションからVisual Studio2015にアップグレードしました...コードを再利用するだけで依存関係の21382nugetパッケージを管理する必要はもうありません。
そこで、いくつかのコードを含むテスト共有プロジェクトを構築しました。次に、.Net4.6上の新しい空のWebアプリケーションをプロジェクトに追加します。参照に移動して、参照ウィンドウに[共有プロジェクト]タブが表示されることを期待していましたが、表示されません。
これで、同じソリューションにクラスライブラリを追加でき、タブが表示され、共有参照を追加できます。ただし、共有プロジェクトをWebアプリケーションに追加できません。
この概念を使用して、複数のMVCプロジェクトとビューを共有できることを望んでいました。
ここで何かが足りないのですか、それとも共有プロジェクトがWebプロジェクトと互換性がないのですか?
これを回避する唯一の方法は、構築するWebアプリケーションごとに2つのプロジェクトを用意することです。コード用に1つ、コンテンツ用に1つ。
例えば
XYZ.SomeWebSite.Code (Class Library Project Type) -> references Shared Project
XYZ.SomeWebSite (Web Project Type)
ただし、このルートを使用すると、ビュー、テキストファイル、cssファイル、javascriptファイルなどをWebアプリケーションにプッシュできなくなります。
【仮回答】
Webアプリケーションのcsprojファイルを手動で編集することで、この問題を回避することができました。
手順は次のとおりです。
次に、ProjectTypeGuids要素を探します。
{349C5851-65DF-11DA-9384-00065B846F21}; {fae04ec0-301f-11d3-bf4b-00c04f79efbc}
最初のGUIDはASP.NetMVC 5プロジェクトのGUIDであり、2番目のGUIDはC#用です。
最初のGUIDとセミコロンを一時的に削除し、c#GUID(2番目のGUID)だけを残すだけです。
プロジェクトをリロードし、共有プロジェクトを追加します。それらがすべて追加されたら、プロジェクトファイルを編集し、最初のGUIDとセミコロンを元に戻します。
プロジェクトをリロードします。
共有プロジェクト参照は引き続き存在し、Webアプリケーションにビルドおよびリンクされます。
オプションで、共有プロジェクトの参照を手動で追加できます。形式は次のとおりです。
<Import Project="..\XYZ.UPlugin\XYZ.Plugin.projitems" Label="Shared" />