无法在VS2015 C++项目中更改.NET目标框架版本

7
正如标题所述,我想为我的C++项目更改.NET目标框架版本。我正在尝试使用/clr命令进行编译,我认为这应该可以启用它?
以下是截图:enter image description here 我正在构建一个供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();
    }
};
}

如果您在对话框中单击“公共语言运行时支持”行,会发生什么?它是否显示一个带有更多选项的“…”? - Drew Noakes
不行。只有这个:http://i.imgur.com/Clopmy1.jpg - Dries
这个设置在VS2015中被添加,但并未实现。在C++/CLI项目中,有几个非常棘手的多目标解决问题需要解决。很不可能会得到解决。最好使用Visual C++ > CLR节点中的项目模板来启动您的项目。迄今为止,获得所有配置和设置正确的最佳方法是使用该设置将显示您选择的版本号。 - Hans Passant
2个回答

6
你应该能够按照 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文件中找不到那个条目。 - Dries
也许在你的其他尝试中被删除了?可以尝试创建一个新项目并从那里复制。我刚刚创建的一个项目中,它看起来像我刚刚编辑的答案。 - Mark E
你创建了一个C++ DLL项目吗?我尝试使用以下方式创建新项目:新建项目 -> Win32控制台应用程序 ->(选项)空项目,DLL,未选中预编译头文件。这样,vcxproj文件中就没有TargetFramework的标签。 - Dries
1
尝试新项目 -> Visual C++ -> CLR -> 类库 - Mark E
抱歉回复晚了。所以,我按照你的建议创建了一个CLR类库。这次我使用Visual Studio 2008来确保我的.NET框架“足够老”,以便在Unity中运行(这是我想的,可能不正确)。 现在,一切都可以正常编译使用.NET 2.0框架,但是当我将dll导入到我的Unity项目中时,它似乎找不到我使用的命名空间(因此无法连接到非托管代码),并且我已经在主要问题中编辑了我在CLR项目中使用的代码。 - Dries

2
使用VS2015,我需要将托管的C++ DLL的.Net目标从3.5升级到4.5.1。在配置属性 - 通用设置中,“.Net目标框架版本”处灰色且值框不可编辑。
步骤如下:
  1. 在记事本中打开Name.vcxproj文件。
  2. 导航至:“<“PropertyGroup Label="Globals"”
  3. 添加: “<”TargetFrameworkVersion“”v4.5.1“</TargetFrameworkVersion”
  4. 保存更新后的项目文件,并重新加载到VSS2015中。
注意:移除尖括号周围的引号。 然后,在重新加载项目到VS2015时,您可以在设置中看到.Net版本。 在我的情况下,它是V4.5.1。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接