代码改变世界

Silverligth项目加载问题 无法读取项目文件“SL1201.csproj”。请确认 声明中的路径正确,且磁盘上存在该文件。

2011-11-07 17:40  左眼微笑右眼泪  阅读(3583)  评论(0编辑  收藏  举报

今天前几天把几个软件重装了一遍,谁知把我的Silverlight环境给弄坏了,我只好把Silverligth所有工具都卸载了,然后重装了一谝,装完后,可以新建项目了,我就没管,谁知道今天下午打开一个网上下载的Silverlight项目时,转换后出现了问题,说是:

无法读取项目文件“SL1201.csproj”。 C:\Users\xiaoxiangfeizi\Desktop\slMessage\SL1201\SL1201.csproj(128,3): 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v3.0\Microsoft.Silverlight.CSharp.targets”。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件。

我觉得很不可思议,因为前几天,下载别人的项目转换总是成功的,不知道怎么搞的,只好上网找,发现有人说:

“找了相关的错误,找不到原因,其他的项目文件都加载进去,但不知为什么这个加载不进去。查看一下其他项目的.csproj的文件,与发生错误的.csproj文件核对下,
找到 <Import >
   改掉即可。
这样问题就解决啦!!!”无法读取项目文件\"\" 请确认 <Import> 声明中的路径正确,且磁盘上存在该文件

按照这位仁兄的说法,我找到一个可以打开的项目,然后把这两个项目的csproj文件进行对比,发现转换后的这个文件的<Import >项内容与正常项目的这个文件是一模一样,我无语了,都是

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.CSharp.targets" />

看了半天还是没找出来,最后查看转换报告的时候,突然发现转换报告里面写的路径是

“C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v3.0\Microsoft.Silverlight.CSharp.targets”。

我用的是VS2010,它这里显示的是v3.0,肯定不对,应该是4.0。但是改哪里呢,对比一下,就发现了,原来csproj里面还有两个节点,分别是MSBuildExtensionsPath32和SilverlightVersion,它们的值分别就对应着C:\Program Files (x86)\MSBuild和v3.0,这下好办了,把SilverlightVersion这个结点的值改了不就行了吗。一查找,果然有SilverlightVersion这个节点,不过它的值并不是v3.0,而是<SilverlightVersion>$(TargetFrameworkVersion)</SilverlightVersion>,原来它里面又引用了另外一个节点,继续查找TargetFrameworkVersion,果然发现了<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>,哈,原来在这,马上改为<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>,哈哈,编译通过,转换成功。