【问题标题】:Visual Studio 2010 project conversion to Visual Studio 2012Visual Studio 2010 项目转换为 Visual Studio 2012
【发布时间】:2013-11-14 13:23:03
【问题描述】:

我的公司有一堆解决方案需要转换并与 VS2012 兼容(保持框架 4.0,顺便说一句)。 我尝试直接用 2012 打开它们,转换器在 .csproj 文件中做了一些更改。

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

及以下:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>


<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

谁能告诉我这些变化究竟意味着什么?我尝试用谷歌搜索它,但没有运气。

另外,如果我尝试将 .csproj 回滚到以前的版本并保持原样,是否会有任何风险?

感谢和问候!

【问题讨论】:

    标签: c# visual-studio-2010 visual-studio-2012 migration csproj


    【解决方案1】:

    每个 Visual Studio 项目基本上都是一个大型构建脚本(您实际上可以使用 msbuild 从命令行构建项目文件)。转换器所做的是为您正在使用的新版本的 Visual Studio 提取正确的构建属性。您实际上可以查看它所提取的文件,因为它们位于您的本地计算机上。

    您发布的第一个更改是提取 Visual Studio 2012 所需的正确版本的 Microsoft.Common.props(通用构建属性)。此导入也在您的旧项目中,只是版本不同。

    第二个变化是导入所有必要的构建“目标”(msbuild 调用脚本“目标”的可执行块)来构建 Web 应用程序。

    如果您偏执,当然,请保留旧项目的备份,但老实说,我在上述更改中没有看到任何令人担忧的内容 - 它们只是为构建引擎提取正确的支持文件。

    希望对您有所帮助!我使用项目文件和 msbuild 多年,如果您需要,可以为您提供更详细的说明。

    【讨论】:

    • 非常感谢您,Spock 先生。我已经将您的答案标记为已接受。但是,如果您有任何有关更改原因的详细信息(或者可能是链接),那就太好了。再次感谢!
    • 每次 Microsoft 推出 Visual Studio 时,它们都会增加版本号。例如,我认为 VS2008 是“9.0”版本,而 VS2010 是“10.0”版本。这些 Visual Studio 版本中的每一个都有与该特定版本关联的构建文件。项目文件中的更改在那里,因此构建引擎将为您正在使用的 Visual Studio 版本选择正确的支持文件(程序集、构建目标等)。您不希望 VS2012 项目源代码较旧的构建基础架构 - 它们可能(并且可能)不兼容。
    • 我试用了VS 2015,所以它进行了自动升级,说它对项目进行了“非功能性更改”。但是我们使用的是 VS 2010,所以它破坏了我们构建服务器上的构建,将 更改为:
    • 这是我在构建服务器上遇到的错误:C:\TeamCity\buildAgent\work\fdef323deb26dbe9\Solutions\MyProj.csproj(2534, 3):错误 MSB4019:导入的项目“C :\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" 未找到。确认 声明中的路径正确,并且该文件存在于磁盘上。 Project Solutions\MyProj.csproj 失败。
    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多