【发布时间】:2014-08-29 08:41:39
【问题描述】:
我有一个 C# 项目 MyProject.csproj,它位于具有以下文件夹结构并引用 Dependency.dll 的解决方案中:
- 库
- Dependency.dll
- 项目
- 我的项目
- MyProject.csproj
- 我的项目
因此,在 MyProject.csproj 中对 Dependency.dll 的引用具有类似这样的 HintPath:
..\..\Libs\Dependency.dll
现在我想在不同项目结构中的不同解决方案中使用 MyProject 作为源,无需修改。这是因为 MyProject 位于它自己的源代码控制存储库中,我在不同的解决方案中使用它作为 Mercurial 子存储库/Git 子模块。 (问题可能会在源代码控制级别解决...)这样的不同解决方案如下所示:
- 库
- Dependency.dll
- 我的项目
- MyProject.csproj
请注意,MyProject 文件夹现在与 Libs 文件夹处于同一级别。因此,原来的 HintPath 现在是无效的(因为它应该是 ..\Libs\Dependency.dll)并且我得到了构建错误。
有没有办法解决这个问题,但在不同的解决方案中保持相同的 csproj?
我发现以下可能的解决方案很棒,但需要修改 csproj。这在我的情况下是最有可能的,但有时有一些外部组件我无法请求这样的修改,所以如果可能的话,我会寻找一些解决方案级别的覆盖。
- 基于文件存在检查的条件提示路径:.csproj multiple hint paths for an assembly 这可能适用于大多数情况,解决方案结构在这里是众所周知的。
- 指定多个程序集搜索位置:https://stackoverflow.com/a/15816779/220230
谢谢。
【问题讨论】:
标签: c# git mercurial csproj assembly-loading