VSeWSS v1.2 を利用して遭遇した不具合とその対処方法です(なお、VSeWSS v1.1 では動作確認していません)。
※ VSeWSS はマイクロソフトの技術サポート対象外のツールであり、記載する内容はあくまでも私見ですので、実施される際には個人の責任で行っていただけるようお願いいたします。
不具合が出る操作
VSeWSS を使用して、Webパーツなどが開発できます。Webパーツの展開を行うには、デバッグの設定で展開先のSharePoint サイトのURLを指定し、展開を行います。
しかし、同じソリューションで一度展開したプロジェクト内容をそのまま同一サーバー上の別の Web アプリケーション (IIS サイト) に展開したいと考え、VSeWSS のデバッグ設定で別の URL を指定して、再び展開しようとすると「このソリューションに同じ名前のアセンブリが2つ含まれているか、指定した名前のアセンブリが SharePoint サーバーにすでに存在します」というエラーメッセージが表示されます。
一度、エラーになってしまうとURLを元のURLに戻して再展開しようとしてもその後展開できなくなってしまいます。
[図.エラーの出力メッセージ]
これは、ついやってしまいがちなミスです。
調査した結果
VSeWSS で ソリューションを展開すると WSPファイルが作成され、これがソリューションとしてSharePoint の構成データベースに登録されます。
(参考) http://msdn.microsoft.com/ja-jp/library/aa544500.aspx
そもそも、ソリューションを利用する場合の展開の大まかな流れは次の通りです。
1.ソリューションを追加する
2.ソリューションを展開する
3.フィーチャーをアクティブ化する
ソリューション展開の詳細は、日本のマイクロソフトのサポートチームのブログ記事が参考になります。
「ソリューションを展開する」
http://blogs.technet.com/sharepoint_support/archive/2009/07/15/wsp.aspx
VSeWSSでは上記の処理を自動的に実行しますが、この2.のソリューションを展開する際に、VSプロジェクトにおいてデバッグ設定で指定した SharePoint WebアプリケーションのURLに対してのみ適用します。同じプロジェクトを再度展開する場合は、いったん展開したものを削除して、再度インストールしなおす処理が行われます。
このとき、最初に展開した場所と異なるURLを指定していると、ソリューション(WSP)は情報は削除されるのですが、フィーチャーのみがアクティブのまま残るという状況となるようです。どうも、これが再展開できないエラーの原因であるようです。
対処方法
フィーチャーが残っていることが原因ですから、まずはフィーチャーを削除してからIISを再起動します。
1.当該フィーチャーの非アクティブ化 (管理サイト または stsadm.exe)
2.フィーチャーの削除 (stsadm.exe)
3. IIS の再起動
フィーチャーの削除は、最初に展開したフィーチャーのうちアクティブになっている全てのフィーチャーを非アクティブ化後、 stsadm.exe を使用して削除します。
[参考]
stsadm.exe を使ってフィーチャーを非アクティブ化する
https://www.microsoft.com/japan/technet/archive/prodtechnol/office/sharepoint/library/5fa25274-170a-42e1-a24b-4811fe4e5482.mspx?mfr=true
stsadm.exe を使ってフィーチャーを削除する
https://www.microsoft.com/japan/technet/archive/prodtechnol/office/sharepoint/library/5fa25274-170a-42e1-a24b-4811fe4e5482.mspx?mfr=true
以上、ご参考まで。