リファクタリングしたいSharePointプロジェクトを継承し、すべての共通/再利用可能なコードを取得して、ソリューション内の別のプロジェクトに配置しました。ソリューションにはすでにいくつかのプロジェクトがあり、ほとんどすべてのプロジェクトには、ソリューション内の他の1つ以上のプロジェクト間の依存関係があります。
すべての依存関係(SPMetalクラス、静的メソッド、utilsなど)を1つのプロジェクトに入れて、共通コードに必要な参照が1つだけになるようにします(コードクローンは必要ありません)。
プロジェクトをリファクタリングし、このコードをSharePointサーバー(VS2012を介したローカル開発サーバーとWSPを介した運用サーバーの両方)に展開しようとしています。最初Common.dll
に、他のすべてのプロジェクトの「追加アセンブリ」リスト(Package
ファイル内)にを追加しようとしましたが、これにより、すべてのWSPが次のエラーで展開に失敗しました。
Cannot add the specified assembly to the global assembly cache
これは、Common.dll
がowstimerおよびその他のサービスによって使用されており、削除できないためです。
私の次の考えは、コードを機能としてデプロイし、他のすべての機能をそれに依存させることでしたが、これを行う方法がわかりません。クラスのみを含む機能を使用する方法はありますか?
複数のSharePointプロジェクトで共通のコードを利用できるようにするためのより良い方法はありますか?