【问题标题】:Target .NET 3.5 C++/CLI in Visual Studio 2010 Beta 2Visual Studio 2010 Beta 2 中的目标 .NET 3.5 C++/CLI
【发布时间】:2010-01-21 00:45:32
【问题描述】:

有没有人成功地将 VS 2008 C++/CLI (vcproj) 项目转换为 VS 2010 项目 (vcxproj),同时保持 .NET 3.5 作为目标框架?我无法做到这一点并使项目成功构建。该项目在 VS2008 中作为 .NET 3.5 编译良好,在 VS2010 中作为 .NET 4.0 编译良好,但我无法在 2010 年以 .NET 3.5 为目标。IDE 似乎没有为它提供选项,并修改 vcxproj 文件通过添加

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

导致编译失败并出现以下错误:

Error   1   error C1001: An internal error has occurred in the compiler.

根据this link,VS2008 和 2010 之间使用的编译器显然存在一些差异,但仍然建议手动编辑项目文件作为解决方案。有人对此有任何想法吗?

【问题讨论】:

    标签: .net visual-c++ visual-studio-2010 c++-cli c1001


    【解决方案1】:

    当您以 .Net framework v3.5 为目标并使用 VS2010 构建时,有时会触发链接器错误 C1001,因为 VS2010 在您编译时会自动添加对 System.Core 的引用。这不是明确的,不会出现在您的引用中,而是在编译时完成。您可以通过在 Globals PropertyGroup 中添加此元素来告诉 VS 不要添加程序集:

    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
    

    【讨论】:

    • 我已经尝试过您对 C1001 的解决方案。现在整个 Visual Studio 2010(最终版本)崩溃了。有什么解决办法吗?
    • 在 Microsoft Connect 上打开错误报告:connect.microsoft.com/VisualStudio/feedback/details/560606/…
    • 您是否确认删除了对 .net fx 4.0 程序集的引用?您可以看到通过命令行调用了什么以及包含了哪些程序集。我不得不对两个不同的项目执行此操作,第一个项目就像一个魅力,由于某种原因,第二个项目花了一段时间(关闭解决方案和 VS 并重新打开我认为成功了)最终删除了引用。
    • 不错;添加此属性为我修复了内部编译器错误(我重新启动了 VS 以避免缓存任何内容)。它会删除编译器的 /FU(...)\v3.5\System.Core.dll 参数。为什么没有人在 Connect 错误中将此作为解决方法添加?
    • 在遇到完全相同的问题后,我只是在连接页面上添加了解决方法,并在此处提供了链接。希望 VS2010 不再让我崩溃!
    【解决方案2】:

    哇,对 Brickner's bug report 的回复是毁灭性的 - 不支持目标 3.5,也不会修复!

    我自己对崩溃的奇怪经历是通过打开预编译头来修复它们,更奇怪的是因为 stdafx.h 是空的,所以我不知道它们在做什么。

    【讨论】:

      【解决方案3】:

      安装此修补程序,您的烦恼可能就解决了:http://support.microsoft.com/kb/976656

      【讨论】:

        【解决方案4】:

        感谢您提供有关 TargetFrameworkVersion 的提示。它对我有用,但不幸的是这对你没有帮助。

        如果您有一些为另一个版本的 C++ 编译器制作的旧文件(PCH 文件、目标文件),很容易出现“内部编译器错误”。你什么时候清理过所有东西 你更改了工具版本?

        【讨论】:

        • 谢谢你的回复,我得看看工作。这是主要 .NET 项目的 C++/CLI 部分的问题,所以我只是在 2008 年编译它并通过 DLL 引用而不是项目进行引用。我们最终还是没有使用它,但我会检查一下是否能解决它
        • 由于无法重现问题(或者不再需要导致问题的情况)而将其标记为答案
        猜你喜欢
        • 1970-01-01
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 1970-01-01
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多