c# - 为什么 Visual Studio 在 Release 构建过程中会在/bin/debug/中寻找未解析的项目引用?

标签 c# visual-studio visual-studio-2013

我正在处理一个奇怪的、非理想的项目/解决方案架构,我正在尝试找出是否有办法完成所需的工作。我的情况如下:

我正在开发分为两个解决方案的软件,我称之为 SolutionOne.sln(在 VS 2010 下构建)和 SolutionTwo.sln(在 VS 2013 下构建)。在SolutionOne中,我们有以下项目:

SolutionOne.sln

  • A.csproj
  • B.csproj
  • C.csproj (includes reference to B.csproj)

在 SolutionTwo 中,我们有几个 SolutionTwo 独有的项目,但我们还包括来自 SolutionOne 的“C”项目——但项目 B(因为在这个最小示例之外,实际上还有几个链接引用,当我们将它们全部包含在内时,它基本上是 SolutionOne 的大部分)。我知道这意味着当我们打开 SolutionTwo 时,“C”项目显示对“B”项目的未解析引用,因为它不包含在我们的第二个解决方案中。

但是:只要我在 SolutionTwo 之前构建 SolutionOne,在调试配置中,构建就会成功并且我们的应用程序可以正常运行。看起来在构建时,Visual Studio 足够聪明,可以从 SolutionOne 构建中的位置获取缺失的“B”项目引用的构建 DLL,因为这两个解决方案共享一个根目录。但是,当我尝试在其 Release 配置中构建这两个解决方案时,出现以下错误:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets(316,9): error MSB3104: The referenced assembly "[path to project]\bin\debug[ProjectReferenceName].dll" was not found. If this assembly is produced by another one of your projects, please make sure to build that project before building this one.

请注意,在该错误消息中,它似乎在正确的 bin 文件夹中进行探测,但它在/debug 子目录而不是/release 中查找,即使这两个解决方案都是使用其发布配置构建的。

我知道这不是项目/解决方案关系的理想用途,但我不太可能在这个阶段重新组织这种设计方式。有什么方法可以让发布版本正确地在/bin/release/目录中查找未解析的项目引用 DLL,正如我所期望的那样?

最佳答案

确保您的 Build - Configuration Manager 的 Active 解决方案配置设置为 Release,并且 Build 列上针对解决方案中的每个项目都有复选标记。

关于c# - 为什么 Visual Studio 在 Release 构建过程中会在/bin/debug/中寻找未解析的项目引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34909078/

相关文章:

c++ - Visual Studio 在转换为 2013 的项目上使用较旧的 2012 编译器

visual-studio - 使用 TFS 在 Visual Studio 2013 Pending Changes 窗口中将默认操作设置为比较

使用 MVC 捆绑时 CSHTML 文件中的 Javascript Intellisense

c# - 将 Windows Phone 7 应用程序中的图像文件上传到 PHP

c# - 在不同事件中访问同一对象

c# - 无法从完整的 .NET 项目中引用 .NET Core 类库

visual-studio - 如何从 github 获取/导入到 Visual Studio 2013

visual-studio - NAnt 中的 msbuild 任务不会在 Prebuild 中编译 WiX 项目

c# - 是否有 WebDriver Navigated 事件?

visual-studio - Web 安装项目不工作