手工修改vs2008方案文件, 工程文件为2005用 2009-11-30 17:47:58

本文详细介绍了如何解决使用Visual Studio 2005打开Visual Studio 2008创建的方案文件时遇到的问题。通过修改sln和csproj文件中的关键配置项,可以成功在Visual Studio 2005环境下运行项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.chinaunix.net/uid-20385220-id-1691578.html

分类:

第一步: 
vs 2005 打开 2008 的方案叫错 
--------------------------- 
Microsoft Visual Studio 
--------------------------- 
The selected file is a solution file, but was created by a newer version of this application and cannot be opened. 
--------------------------- 
OK  
--------------------------- 
大意是: 这个方案文件是新版本 vs 创建的, 2005 打不开她. 

修改之, 用个文本编辑器打开 sln 文件, 修改头部的两个数字即可: 

Microsoft Visual Studio Solution File, Format Version 10.00 
# Visual Studio 2008 
改为 

Microsoft Visual Studio Solution File, Format Version 9.00 
# Visual Studio 2005 

第二步: 
再次用 vs 2005 打开 sln 文件, 这次 sln 不叫错了, 而是工程文件叫错, 
叫错证据: 
--------------------------- 
Microsoft Visual Studio 
--------------------------- 
Unable to read the project file 'CSharp Code Header Designer.csproj'. 

E:\X\test.csproj(164,11): The imported project "E:\Microsoft.CSharp.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. 
--------------------------- 
OK  Cancel  
--------------------------- 

错误原因: 2005 没有定义宏 MSBuildToolsPath, 改用宏 MSBuildBinPath. 

文本编辑器打开 csproj, 
定位到: 
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
修改为: 
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 

再次打开, OK 了, 且慢, 工程文件还有几处需要修改: 

Project 节: 
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
删除 ToolsVersion="3.5" 改为 
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

将 
    <ProductVersion>9.0.30729 </ProductVersion> 
改为 
    <ProductVersion>8.0.50727 </ProductVersion> 

删除 
    <TargetFrameworkVersion>v3.5 </TargetFrameworkVersion> 


外部引用节删除(这几个 dll 是 2.0 中没有的): 
    <Reference Include="System.Core"> 
      <RequiredTargetFramework>3.5 </RequiredTargetFramework> 
    </Reference> 
    <Reference Include="System.Xml.Linq"> 
      <RequiredTargetFramework>3.5 </RequiredTargetFramework> 
    </Reference> 
    <Reference Include="System.Data.DataSetExtensions"> 
      <RequiredTargetFramework>3.5 </RequiredTargetFramework> 
    </Reference> 


好了, 到此 解决方案和工程文件的修改就完毕了, 
编译之. 


又他妈叫错了, 该死的 using System.Xml.Linq; 
在好些代码中自动加入了 linq 名字空间的 using, 找到, 删除之. 

编译, ok 了. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值