无法在 VS 2015 C++ 项目中更改 .NET 目标框架版本
Posted
技术标签:
【中文标题】无法在 VS 2015 C++ 项目中更改 .NET 目标框架版本【英文标题】:Can't change .NET Target Framework Version in VS 2015 C++ project 【发布时间】: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 节点中的项目模板来启动您的项目。到目前为止,正确设置所有配置和设置的最佳方式是,至少该设置会显示您选择的版本号。
【参考方案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”灰显,其值框不可编辑。
-
在记事本中打开 Name.vcxproj 文件。
导航到:"
添加:"
保存更新的项目文件,然后重新加载到 VSS2015。
注意:删除尖括号周围的“”。 然后当项目重新加载到 VS2015 中时,您可以看到设置中列出的 .Net 版本。就我而言,它是 V4.5.1。
【讨论】:
以上是关于无法在 VS 2015 C++ 项目中更改 .NET 目标框架版本的主要内容,如果未能解决你的问题,请参考以下文章
无法在 VS 2015 中创建 C++ ConsoleApplication 或 C++ EmptyProject
vs2015写c++不是内部或外部命令,也不是可运行的程序或批处理文件