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解决方案
    • 智能设备项目
  • 类库项目
  • VS2013解决方案
    • 类库项目
    • ASP。。MVC项目
    • 这样做的结果是,我可以在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不支持智能设备项目。

      Visual Studio 2008项目2013解决方案

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

      因此,您应该在VS2013中迁移类库项目,并且它应该能够在VS2008解决方案中工作而无需任何修改。

      VS2008和MSBuild 3.5给你错误,因为Choose的评估比Project晚,所以你在Choose(又名ProjectToolsVersion)中定义的不能在Project中使用。