我们有一个包含网站和类库的解决方案。我们也有开发人员在 VS 2005 和 VS 2008 中工作。问题是当用户从类库中添加文件/删除文件时,它不会被添加到使用其他版本的用户的项目文件中VS。我还必须设置我们的自动构建以使用一个项目文件。有没有办法解决这个问题,或者我们是否需要将每个人都升级到 2008?
4 回答
在一个由多个项目成员组成的团队中使用两个不同版本的 Visual Studio 绝对没有意义。我建议降级到 Visual Studio 2005 或升级到 Visual Studio 2008。您可以在同一台机器上安装多个版本的 Visual Studio,而不会产生副作用。
您需要将每个解决方案文件保存在相同的 Visual Studio 版本中。不过,可以将您的产品拆分为多个解决方案。在这种情况下,您可能有 1 个保存 2005 年项目的 .sln 文件和 1 个保存 2008 年项目的 .sln 文件。
正如您所提到的,没有自动方法可以使 2005 和 2008 项目保持同步,因为当您将文件添加到其中一个项目时,另一个将没有该新文件。同样,当您删除文件时。
也许您应该降级到 VS 2005 - 因为我现在正在使用 VS08 开发一个项目,并且引用的 dll 的路径时不时地混淆并且 dll 丢失了 - 或者我们遇到了与您刚刚描述的文件相同的问题从一个用户添加的内容在更新后不在下一个用户的项目文件中。
我不确定“网站”(而不是“Web 应用程序”)项目,但通常您不需要 2005 年和 2008 年的不同项目文件。您只需要单独的解决方案文件。
只需在 2008 年打开您的 2005 年项目并允许它升级您的解决方案/项目。您可能会收到一个对话框,要求您更新 CLR 版本,只需说不。
一旦你有一个工作的 2008 解决方案,将 *.sln 文件复制到另一个名称(我将我的副本称为 *.2005.sln),在记事本或你喜欢的文本编辑器中打开复制的 *.sln 文件。在第 2 行找到“Format Version 10.0”,并更改为“Format Version 9.0”。保存文件。
就是这样,您升级的解决方案文件在 VS 2008 中运行,而您复制和更改的解决方案文件在 VS 2005 中运行。
如果您有 Web 应用程序项目,那么还有一个额外的步骤。在 Web 应用程序的 vbproj 或 csproj 文件中,找到以下行:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplications.targets" Condition="" />
并用这两行替换这一行:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplications.targets" Condition="'$(Solutions.VSVersion)' == '8.0'" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplications.targets" Condition="'$(Solutions.VSVersion)' == '9.0'" />
这两行将根据使用的 VS 版本有条件地选择正确的 MSBuild 路径。