2013年Visual Studio 2008项目解决方案

Posted

技术标签:

【中文标题】2013年Visual Studio 2008项目解决方案【英文标题】:Visual Studio 2008 Project in 2013 Solution 【发布时间】:2014-03-26 00:06:25 【问题描述】:

我有一个 Visual Studio 2008 项目,它是一个针对 .NET 3.5 Compact Framework Windows CE 设备的智能设备项目,它当前引用了一个 3.5 类库项目。

我想做的是能够将类库添加到 Visual Studio 2012/2013 解决方案中,而无需“迁移”它。

例如目前的结构是:

VS2008解决方案 智能设备项目 类库项目

我想要的是:

VS2008解决方案 智能设备项目 类库项目 VS2013解决方案 类库项目 ASP.NET MVC 项目

这样做的结果是我可以在 VS2008 中处理智能设备项目并将类添加到类库项目中,然后能够打开 VS2013 解决方案文件并使用这些新类。

当我查看 2008 年类项目和 2013 年类项目 csproj 文件之间的区别时,唯一真正不同的是项目元素上的 ToolsVersion (http://msdn.microsoft.com/en-us/library/bcxfsh87.aspx)。 在 VS2008 中,ToolsVersion 是 3.5,但在 VS2013 中是 12.0。

我尝试使用以下工具在 3.5 和 12.0 之间切换 ClassLibraryProject:

<Project ToolsVersion="$(ProjectToolsVersion)">
<Choose>
    <When Condition="'$(VisualStudioVersion)' != ''">
        <PropertyGroup>
            <ProjectToolsVersion>12.0</ProjectToolsVersion>
        </PropertyGroup>
    </When>
    <Otherwise>
        <PropertyGroup>
            <ProjectToolsVersion>3.5</ProjectToolsVersion>
        </PropertyGroup>
    </Otherwise>
</Choose>
<!-- other project stuff -->
</Project>

我可以在VS2013中打开这个很好,但是当我在VS2008中打开它时它说:

Unable to read the project file 'ClassLibraryProject.csproj'.
C:\Test\ClassLibraryPorject.csproj: The tools version "$(ProjectToolsVersion)" is unrecognized.

请注意:我无法将整个项目迁移到 VS2013,因为 VS2013 不支持智能设备项目。

【问题讨论】:

您能使用像 2010 这样的旧版本吗?这可能与 '08 或 '13 更兼容。 @jamesthollowell,VS2008 是支持智能设备项目的最后一个 VS 版本。 VS2010 及以上都无法支持此类项目。 【参考方案1】:

使用 MSBuild 3.5 的 VS2008 应该能够处理 ToolsVersion 12,因为在这种情况下它会自动回退到 ToolsVersion 3.5。

因此,您应该在VS2013中迁移类库项目,它应该能够在VS2008解决方案中不做任何修改。

VS2008 和 MSBuild 3.5 会出现错误,因为 Choose 的评估时间晚于 Project,因此您在 Choose(又名 ProjectToolsVersion)中定义的内容不能在 Project 中使用。

【讨论】:

以上是关于2013年Visual Studio 2008项目解决方案的主要内容,如果未能解决你的问题,请参考以下文章

使用 Visual Studio 2008 创建新的 WiX 安装项目时出错

自动发布脚本和 Visual Studio 安装项目

Visual Studio 2010 和 2012 和 2013 连接到 Team Server Foundation 2008

Visual Studio 2013 中的 MSM 合并模块:未检测到依赖关系

将 C++ 项目从 Visual Studio 2008 转换为 Visual Studio 2010

在 3.5 而不是 2.0 中编译的类库 - 从 Visual Studio 2008 迁移到 2013