1

私は、solution_1 ( project_1 および project_2を含む) とsolution_2 ( project_3を含む) の 2 つのソリューションを使用しています。ここでは、ユーザーからの機能要求を取得して、solution_2 の project_3 に機能を追加しています。私が解決しなければならない理由は、別のプログラマーがproject_3に機能を追加してこれをリリースできる必要があるためですが、彼にproject_1にアクセスさせたくないからです。新しい機能をリリースしたいときは、両方のソリューションでプロジェクトをビルドしてリリースする必要がありますが、変更を加えたのはproject_3だけなので、このプロジェクトだけがリリースされるはずです。

今のところ、project_1にはアセンブリproject_3への参照があり、プロパティCopy to localは FALSE ですが、これにより次のエラーが発生します。

Assembly 'project_3.dll' must be strong signed in order to be marked as a prerequisite. 

project_3 をビルドするたびに、出力パスは両方のソリューションに表示されるフォルダーに設定されます。

私の要点は、変更を加えていないsolution_1でproject_1をビルドしてリリースし続けるのではなく、実際に変更が加えられているsolution_2project_3のみをビルドしてリリースし、新しい機能を利用できるようにしたいということです。ユーザーのために。

4

1 に答える 1

2

プロジェクトは複数のソリューションに含めることができます。project_3solution_1に追加するだけで、プロジェクトが変更されたときに 1 つのソリューションを再コンパイルするだけで済みます。

これを行う場合、いくつかの問題に注意する必要があります。ほとんどが常識的なものですが、それでも:

  • 他のソリューションのリファクタリング ツールは、このソリューションを認識しません。つまり、依存関係が壊れる可能性があります (たとえば、solution_2 がリファクタリングされた場合、両方にある project_3 に対する solution_1 の依存関係に問題があります)。
  • 自分の変更を上書きしないように、両方のソリューションを同時に開かないでください。
  • VS.NET はこの問題をサポートしていますが、単純にするための特別な努力はしていません。そのため、プロジェクト ファイルにソリューション全体の変数への参照が含まれている場合は、それが問題ないことを手動で確認する必要があります (たとえば、カスタム ビルド ステップがある場合)。
  • 特に、nuget は既定でそのパッケージをソリューション レベルの /packages フォルダーに格納します。プロジェクトが別のソリューションにある場合、このパッケージ フォルダーは別の場所 (別の相対パス) にある可能性があり、プロジェクト ファイルに保存され、問題が発生します。nuget フォルダーへの異なる (相対) パスは避けたいと思います。

project_3 が作成するアセンブリを参照するのではなく、ソリューション 1 に既存のプロジェクト 3 を含め、プロジェクト自体を参照する必要があります。(これは強力な署名とは関係ありません。これは別のエラーです)。

于 2013-01-19T11:10:20.233 に答える