2010年无法将VS2005中的vcproj转换为vcxproj

Posted

技术标签:

【中文标题】2010年无法将VS2005中的vcproj转换为vcxproj【英文标题】:Cannot convert vcproj in VS2005 to vcxproj in 2010 【发布时间】:2012-01-01 13:36:47 【问题描述】:

我尝试将 vcprojs 从 2005 年转换为 2010 年,但出现以下错误:

正在转换项目文件“C:\temp\Win32GlobAgent\Win32GlobAgent.vcproj”。无法读取项目文件“Win32GlobAgent.vcxproj”。 C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(36,5):表达式“[System.IO.Path]::Combine(C:\temp\Win32GlobAgent\,” C:\temp\Win32GlobAgent\"/bin\Win32GlobAgent.dll)" 无法评估。路径中有非法字符。

我需要这方面的帮助。

我也尝试先转换为 2008 年,然后转换为 2010 年,但没有帮助。

谢谢

【问题讨论】:

【参考方案1】:

"C:\temp\Win32GlobAgent\"/bin\Win32GlobAgent.dll

从错误消息中非常清楚,它是在字符串内部而不是结尾的双引号上绊倒。这可能是由/bin 上的正斜杠引起的。

在 .vcproj 文件中搜索 /bin 并使用文本编辑器更正为 \binbin。记事本就可以了。

【讨论】:

【参考方案2】:

新的 vcxproj 文件中本身没有非法符号。然而,文本元素中的引号在 VS2013/VS2012 中的处理方式不同。他们过去很好,但现在导致报告错误。要解决此问题,只需按照 Hans Passant 的建议手动编辑 vcxproj 文件。 例如,改变这个

<Midl Include="doc.idl">
  <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"..\Lib\lib.tlb"</TypeLibraryName>
  ...
</Midl>

对此(注意 ..\Lib\lib.tlb 周围的引号已删除:

<Midl Include="doc.idl">
  <TypeLibraryName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\Lib\lib.tlb</TypeLibraryName>
  ...
</Midl>

对 Midl 元素内的所有其他元素重复此步骤。

【讨论】:

以上是关于2010年无法将VS2005中的vcproj转换为vcxproj的主要内容,如果未能解决你的问题,请参考以下文章

将crm 4插件项目从visual studio 2005升级到visual studio 2010

从 2005 年开始的视觉工作室 2010?

VS 2010 中的 C++ 中的 static_cast 无法从 void* 转换为 size_t 错误

如何将VS2003的XslTransform转换为VS2005的XslCompiledTransform?

在将大型 C++ 程序从 VS2005 转换为 VS2008 之前我应该​​知道啥?

如何在 VS 2005 中为委托回调实现自动属性