我想找到一种方法,在同一组项目中使用多个不同版本的Visual Studio。我们大部分团队成员使用2008版本,但我正在尝试2010版本。所有项目都是用C#编写的。
据我所知,Visual Studio 2010会坚持升级所有项目,因此不可能将所有解决方案/项目文件留在2008版本。我真的不想分支整个源代码树,所以我希望找到一种让多个版本的项目文件共存的方法。目前,我已经复制了所有的 .sln 和 .csproj 文件,这样就有:
# 2008 versions
SolutionName.sln
ProjectA.csproj
ProjectB.csproj
# 2010 versions
SolutionName.vs2010.sln
ProjectA.vs2010.csproj
ProjectB.vs2010.csproj
尽管所有2010版本的文件与它们的2008版本的文件具有相同的程序集名称,但Visual Studio(2010)认为这些项目都是“ProjectName.vs2010”。在VS中重命名该项目会失败,并显示一个消息,指出已存在同名文件。我认为将2010版本放入子文件夹中不是解决方案,因为这会破坏文件中的任何相对路径。
所以:
- 有没有办法让VS相信项目名称不应该加上“ .vs2010 ”后缀(即不与文件同名)?或者 - 我的方法是否有误?在同一项目上使用多个VS的更好方法是什么?
更新:
我最初的说法是错误的,即Visual Studio无法找到项目引用,因为它正在使用文件名。我遇到的具体问题是,在我的构建文件中,项目引用的格式如下:
<ProjectReference Include="..\..\path\to\ProjectName.vs2010.csproj">
<Project>{48354450-2462-449D-8B32-EFECA39F6CD7}</Project>
<Name>ProjectName</Name>
</ProjectReference>
我复制的项目文件显然具有不同的ID(或者在<Project>
元素中是不同的)。简单地从构建文件中删除该元素解决了这个特定问题:
<ProjectReference Include="..\..\path\to\ProjectName.vs2010.csproj">
<Name>ProjectName</Name>
</ProjectReference>
话虽如此,复制项目和解决方案文件的整个过程实际上比它所值得的要花费更多的精力,因此我不建议采用这种方法。
ProjectName.vs2010
的引用有效,但只对ProjectName
的引用失败)。 - SimonC