我正在处理一个奇怪的、不理想的项目/解决方案架构,我试图找出是否有一种方法来完成所需的工作。我的情况如下:
我正在开发软件,它被分成两个解决方案,我将它们称为SolutionOne.sln(在VS 2010下构建)和SolutionTwo.sln(在VS 2013下构建)。在SolutionOne中,我们有以下项目:
SolutionOne.sln
- A.csproj - B.csproj - C.csproj(包括对B.csproj的引用)
在SolutionTwo中,我们有几个项目是SolutionTwo独有的,但我们也包括SolutionOne中的“C”项目——但不包括B项目(因为在这个最小的示例之外,实际上有更多的链接引用,如果我们都包括进去,基本上就是SolutionOne的大部分内容)。我知道这意味着当我们打开SolutionTwo时,“C”项目显示未解析到“B”项目的引用,因为它没有包括在我们的第二个解决方案中。
然而:只要我在SolutionTwo之前构建SolutionOne,在Debug配置中,构建就会成功,我们的应用程序也能正常运行。看起来在构建时,Visual Studio足够聪明,可以从SolutionOne构建的位置获取缺少的“B”项目引用的已构建DLL,因为这两个解决方案共享一个根目录。但是,当我尝试在它们的Release配置下构建两个解决方案时,我会得到以下错误:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets(316,9): error MSB3104: 未找到引用程序集“[项目路径]\bin\debug\[ProjectReferenceName].dll”。如果这个程序集是由你的其他项目生成的,请确保在构建此项目之前先构建那个项目。
请注意,在该错误消息中,它似乎在正确的bin文件夹中进行探测,但它正在查找/debug子目录而不是/release,尽管两个解决方案都使用它们的发布配置进行构建。
我知道这不是理想的项目/解决方案关系使用方式,但在这个阶段重新组织设计的可能性非常小。有没有办法让Release版本正确地在/bin/release/目录中查找未解析的Project Reference DLL,就像我期望的那样?
我正在开发软件,它被分成两个解决方案,我将它们称为SolutionOne.sln(在VS 2010下构建)和SolutionTwo.sln(在VS 2013下构建)。在SolutionOne中,我们有以下项目:
SolutionOne.sln
- A.csproj - B.csproj - C.csproj(包括对B.csproj的引用)
在SolutionTwo中,我们有几个项目是SolutionTwo独有的,但我们也包括SolutionOne中的“C”项目——但不包括B项目(因为在这个最小的示例之外,实际上有更多的链接引用,如果我们都包括进去,基本上就是SolutionOne的大部分内容)。我知道这意味着当我们打开SolutionTwo时,“C”项目显示未解析到“B”项目的引用,因为它没有包括在我们的第二个解决方案中。
然而:只要我在SolutionTwo之前构建SolutionOne,在Debug配置中,构建就会成功,我们的应用程序也能正常运行。看起来在构建时,Visual Studio足够聪明,可以从SolutionOne构建的位置获取缺少的“B”项目引用的已构建DLL,因为这两个解决方案共享一个根目录。但是,当我尝试在它们的Release配置下构建两个解决方案时,我会得到以下错误:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets(316,9): error MSB3104: 未找到引用程序集“[项目路径]\bin\debug\[ProjectReferenceName].dll”。如果这个程序集是由你的其他项目生成的,请确保在构建此项目之前先构建那个项目。
请注意,在该错误消息中,它似乎在正确的bin文件夹中进行探测,但它正在查找/debug子目录而不是/release,尽管两个解决方案都使用它们的发布配置进行构建。
我知道这不是理想的项目/解决方案关系使用方式,但在这个阶段重新组织设计的可能性非常小。有没有办法让Release版本正确地在/bin/release/目录中查找未解析的Project Reference DLL,就像我期望的那样?