我正在尝试找到一种方法,可以在同一组项目中使用多个版本的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版本放在子文件夹中会是一个解决方案,因为它会搞砸文件中的任何相对路径。
所以:
更新
我最初声称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>
话虽如此,复制项目和解决方案文件的整个过程实际上是比它的价值更多的努力,所以我不推荐这种方法。
答案 0 :(得分:3)
您经常修改项目吗?
您可以使用csproj和sln文件的升级版本。 这样您就可以提交/签入源代码文件的所有更改,但项目文件除外,这些文件通常不会被修改(除了添加新文件)。
然后,如果您想提交项目文件中的更改,您将使用该文件的中间本地VS2008版本,并在最终提交此VS2008版本之前使用您喜欢的差异/合并工具对其进行排列。这将是某种本地分支。
答案 1 :(得分:1)
除非您必须使用不同版本的Visual Studio,否则仍在使用2008的团队可以升级到Visual Studio 2010 Express。它可以免费用于商业用途,并且只缺少一些您可能不需要的高级功能。
答案 2 :(得分:0)
您是否尝试在简单的文本edior中打开SolutionName.vs2010.sln并更改项目的diplay名称?
(表格:项目(“{$ GUID}”)=“$ DISPLAYNAME”,“PROJECTFILE”,“{$ OTHERGUID}”
回答你问题的第二部分:
为什么掩盖项目文件的多个版本很重要?实际情况是,有两个版本,你必须小心维护它们两个关于你的项目的状态(文件被添加/重命名/删除;配置选项被更改)。
拥有两组项目和解决方案文件会导致它们之间的差异,这会破坏事情。
通常:不要在同一个项目中混合Visual Studio版本。保持开发人员之间的工具链相同将为您节省很多麻烦。
答案 3 :(得分:0)
唯一的问题是,如果他们试图在2008年打开项目文件并且他们没有安装2010(因为我认为2010年增加了一些标准2008年不会知道的新构建目标)。我不认为这是一个问题,但我在上周(在一个网络项目中)遇到了它,所以它确实以某种形式存在于某些项目中。
如果你去重命名路线,最好的方法是在记事本中打开sln文件,并手动重命名csproj对新名称的引用(添加任何新的重命名文件夹路径),然后重命名任何视觉工作室外的文件夹,然后在Windows资源管理器中重命名文件名,然后在Windows资源管理器中重命名csproj,然后在visual studio中打开解决方案。你的scm绑定可能会在那时被冲洗......