次のフォルダー構造を持つソリューションにあり、Dependency.dll を参照する C# プロジェクト MyProject.csproj があります。
- ライブラリ
- 依存関係.dll
- プロジェクト
- 私のプロジェクト
- MyProject.csproj
- 私のプロジェクト
したがって、MyProject.csproj の Dependency.dll への参照には、次のような HintPath があります。
..\..\Libs\Dependency.dll
ここで、ソースとして変更せずに、別のプロジェクト構造の別のソリューションで MyProject を使用したいと思います。これは、MyProject が独自のソース管理リポジトリにあり、Mercurial サブリポジトリ/Git サブモジュールとしてさまざまなソリューションで使用しているためです。(問題はソース管理レベルで解決されるかもしれません...) そのような別の解決策は次のようになります:
- ライブラリ
- 依存関係.dll
- 私のプロジェクト
- MyProject.csproj
MyProject フォルダーが Libs フォルダーと同じレベルにあることに注意してください。したがって、元の HintPath は現在無効であり (そうである必要があるため..\Libs\Dependency.dll
)、ビルド エラーが発生します。
これを修正する方法はありますが、異なるソリューション間で同じ csproj を維持する方法はありますか?
次の解決策は素晴らしいですが、csproj の変更が必要です。これは私の場合ほとんど可能ですが、そのような変更を要求できない外部コンポーネントがある場合があるため、可能であればソリューションレベルのオーバーライドを探します。
- ファイルの存在チェックに基づく条件付き HintPath: .csproj アセンブリの複数のヒント パスこれは、ソリューションの構造がここでよく知られているほとんどの場合に機能する可能性があります。
- 複数のアセンブリ検索場所の指定: https://stackoverflow.com/a/15816779/220230
ありがとうございました。