C# Visual Studio 2008:找不到对项目的引用
我们有一个用C#编写的应用程序,它分为几个项目。这些项目对其他项目具有参考价值 当有人从版本控制获取源代码并在其自己的计算机上打开包含这些项目的解决方案时,Visual Studio无法找到项目之间的引用,即使引用的项目已成功生成。此人必须重新添加引用才能解决此问题 在我看来,VisualStudio在“suo”文件中保存了一些数据,所以下次它知道在哪里找到重新添加的引用,并且这个问题不会在下次用户打开解决方案时出现 由于'suo'文件保留引用的绝对路径,因此我们无法在源代码管理中提交它 问题是,我们有一个单独的机器,它自动构建这个大型应用程序(正如我们的夜间构建版本),当构建自动化工具打开解决方案并调用Visual Studio的编译器来构建它时,无法找到引用。(自动化工具会清理所有内容,并再次获取源代码的最新版本,因此它没有“suo”文件。) 有解决办法吗 额外信息 Visual Studio版本:2008-9.0.21022.8 .Net framework:3.5 SP1 操作系统:Windows XP Professional(SP2和SP3-我们都有) 更新 似乎Visual Studio有时会将“.csproj”文件中的C# Visual Studio 2008:找不到对项目的引用,c#,.net,visual-studio-2008,C#,.net,Visual Studio 2008,我们有一个用C#编写的应用程序,它分为几个项目。这些项目对其他项目具有参考价值 当有人从版本控制获取源代码并在其自己的计算机上打开包含这些项目的解决方案时,Visual Studio无法找到项目之间的引用,即使引用的项目已成功生成。此人必须重新添加引用才能解决此问题 在我看来,VisualStudio在“suo”文件中保存了一些数据,所以下次它知道在哪里找到重新添加的引用,并且这个问题不会在下次用户打开解决方案时出现 由于'suo'文件保留引用的绝对路径,因此我们无法在源代码管理中提交它 问题是
标记更改为
。我们的开发人员提交了这个文件,这个问题就发生了
我找不到它是否是VisualStudio中的bug。我想到的唯一解决方案是在将其传递给自动化工具之前,在“.csproj”文件中编写一个工具来更正此问题。打开项目文件(*.csproj),看看它们引用了什么。大多数情况下,请确保路径是相对于解决方案路径的,并且您的构建脚本可能会使用其他路径
解决此问题的一种方法:
$(源路径)
)来引用它注:*.suo不应该在版本控制系统中。为什么不使用msbuild而不是automated visual studio编译器?引用在每个项目的
.csproj
文件中定义。根据我的经验,它们可以用两种方式中的一种来定义
使用提示路径查找引用的程序集:
<Reference Include="CommonServiceLocator.NinjectAdapter, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\Dependencies\CommonServiceLocator.NinjectAdapter.dll</HintPath>
</Reference>
..\..\Dependencies\CommonServiceLocator.NinjectAdapter.dll
或没有:
<Reference Include="CommonServiceLocator.NinjectAdapter, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL"/>
您需要确保引用是第一种形式,提示路径存在,并且它是一个相对路径,这样无论您在哪里签出解决方案,它都可以工作
您可以使用外部编辑器编辑
.csproj
文件,或者右键单击项目,从关联菜单中选择“卸载项目”,然后再次右键单击卸载的项目并选择“编辑项目名称.csproj”。编辑完成后,再次右键单击并重新加载项目。这是VisualStudio 2008及之前版本中的一个错误
如果打开的解决方案包含一个引用了另一个项目的项目,但引用的项目未包含在解决方案中,VS将查找引用的项目,但会以引用输出DLL而不是项目本身的方式更改引用
此错误已在VS2010和MSBuild 4中修复。是。我所说的
solution',是指sln'文件。因此,您的.csproj文件中的项目引用有问题。VS做了什么改变?@DiVan:噢!我没有检查预览就快速发布更新!所以我没有注意到这两个标签没有出现!修正了。我的问题不是关于第三方DLL的,我是指另一个项目。ProjectReference标记。没有区别。MSBuild以相同的方式进行编译。