Visual Studio 2008项目2013解决方案
本文关键字:解决方案 2013 2008项目 Studio Visual | 更新日期: 2023-09-27 17:53:12
我有一个Visual Studio 2008项目,它是一个针对。net 3.5 Compact Framework Windows CE设备的智能设备项目,目前它引用了一个3.5类库项目。
我想做的是能够将类库添加到Visual Studio 2012/2013解决方案中,而无需"迁移"它。
例如当前的结构是:
- VS2008中解决方案
- 智能设备项目
类库项目
我想要的是:
- VS2008解决方案
- 智能设备项目
类库项目
这样做的结果是,我可以在VS2008中的智能设备项目上工作,并将类添加到类库项目中,然后能够打开VS2013解决方案文件并使这些新类可用。
当我看到2008类项目和2013类项目csproj文件之间的差异时,唯一真正不同的是项目元素(http://msdn.microsoft.com/en-us/library/bcxfsh87.aspx)上的ToolsVersion。在VS2008中,ToolsVersion是3.5,但在VS2013中是12.0。
我试图使ClassLibraryProject在3.5和12.0之间切换ToolsVersion与以下:
<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中打开这个fine,但是当我在VS2008中打开它时,它说:
Unable to read the project file 'ClassLibraryProject.csproj'.
C:'Test'ClassLibraryPorject.csproj: The tools version "$(ProjectToolsVersion)" is unrecognized.
请注意:我无法将整个项目迁移到VS2013,因为VS2013不支持智能设备项目。
使用MSBuild 3.5的VS2008应该能够处理ToolsVersion 12,因为在这种情况下,它会自动回落到ToolsVersion 3.5。
因此,您应该在VS2013中迁移类库项目,并且它应该能够在VS2008解决方案中工作而无需任何修改。
VS2008和MSBuild 3.5给你错误,因为Choose
的评估比Project
晚,所以你在Choose
(又名ProjectToolsVersion
)中定义的不能在Project
中使用。