2

我的公司有一堆解决方案需要转换并与 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 回滚到以前的版本并保持原样,我会有什么风险吗?

谢谢并恭祝安康!

4

1 回答 1

3

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

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

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

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

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

于 2013-11-14T13:38:15.457 回答