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 2010 和 2012 和 2013 连接到 Team Server Foundation 2008
Visual Studio 2013 中的 MSM 合并模块:未检测到依赖关系