【问题标题】:Can't change .NET Target Framework Version in VS 2015 C++ project无法在 VS 2015 C++ 项目中更改 .NET 目标框架版本
【发布时间】:2015-10-25 11:36:30
【问题描述】:

正如标题所说,我想为我的 C++ 项目更改 .NET Target Framework 版本。我正在尝试使用我认为应该启用它的 /clr 命令进行编译?

这是一个屏幕截图:

我正在尝试构建一个用于 Unity 的 DLL,并且我希望能够选择合适的框架。

我已尝试更改 .vxproj 文件中的信息,但找不到正确的标签,当我自己添加时,它会引发错误。

编辑:

这是包含可以在 C# 中调用以使用我之前编写的 C++ 代码的方法的代码。我只编辑了 CLR 类库的 .h 文件(所以 .cpp 文件只包含我认为应该没问题的头文件)

#pragma once
#include "PortAudioManager.h"

using namespace System;

namespace PortAudioWrapper {

public ref class PortAudioManaged
{
private:
    PortAudioManager* audioManager;
public:
    PortAudioManaged() : audioManager(new PortAudioManager()) {
    }

    virtual ~PortAudioManaged() {
        this->!PortAudioManaged();
    }

    // = Object.Finalize
    !PortAudioManaged() {
        delete audioManager;
        audioManager = nullptr;
    }

    void openStreamManaged() {
        audioManager->openStream();
    }

    void stopStreamManaged() {
        audioManager->stopStream();
    }
};
}

【问题讨论】:

  • 如果点击对话框中的Common Language Runtime Support行会怎样?它是否显示具有更多选项的...
  • 不。只有这个:i.imgur.com/Clopmy1.jpg
  • 这个设置是在 VS2015 中添加的,但没有实现。在 C++/CLI 项目中使用多目标来解决几个非常棘手的问题。他们不太可能得到解决。最好使用 Visual C++ > CLR 节点中的项目模板来启动您的项目。到目前为止,正确设置所有配置和设置的最佳方式是,至少该设置会显示您选择的版本号。

标签: c# c++ visual-studio-2015 clr


【解决方案1】:

您应该能够按照https://msdn.microsoft.com/en-us/library/ff770576.aspx 的指南进行操作

您可以在 C++ 中定位的 .NET 框架取决于您选择的工具集。您可能会发现只需下载支持您希望使用的框架的旧版本 VS 会更容易。

在我刚刚创建的项目文件中,该部分如下所示:

<PropertyGroup Label="Globals">
   <ProjectGuid>{48ACEC98-3369-486F-9033-8C433D408570}</ProjectGuid>
   <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
   <Keyword>ManagedCProj</Keyword>
   <RootNamespace>ClassLibrary1</RootNamespace>
   <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>

【讨论】:

  • 我似乎无法在 vcxproj 文件中找到该条目。
  • 可能在您的其他尝试中被删除?可以尝试创建一个新项目并将其复制到那里。在我刚刚制作的一个中,它看起来就像我刚刚编辑成的答案。
  • 您是否创建了 c++ DLL 项目?我尝试使用这样创建的新项目:新项目-> Win32 控制台应用程序->(选项)空项目,DLL,未选中的预编译头文件。这样,vcxproj文件中就没有TargetFramework的标签了
  • 尝试新项目 -> Visual C++ -> CLR -> 类库
  • 抱歉回复晚了。所以,正如你告诉我的那样,我创建了一个 CLR 类库。这次我是在 Visual Studio 2008 中进行的,以确保我的 .NET 框架“足够老”,以便它在 Unity 中工作(我是这么想的,这可能是错误的)。现在,一切都可以使用 .NET 2.0 框架正确编译,但是当我在我的 Unity 项目中导入 dll 时,它似乎没有找到我使用的命名空间(因此,与非托管代码的连接)+我'我用我在 CLR 项目中使用的代码编辑了主要问题
【解决方案2】:

使用 VS2015,我必须将托管 C++ DLL 的 .Net 目标从 3.5 升级到 4.5.1。在Configuration Properties-General设置中,“.Net Target Framework Version”灰显,其值框不可编辑。

  1. 在记事本中打开 Name.vcxproj 文件。
  2. 导航到:"
  3. 添加:"
  4. 保存更新的项目文件,然后重新加载到 VSS2015。

注意:删除尖括号周围的“”。 然后当项目重新加载到 VS2015 中时,您可以看到设置中列出的 .Net 版本。就我而言,它是 V4.5.1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    相关资源
    最近更新 更多