无法在 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

无法在 VS 2013 社区中创建 C++ 项目

VS2017无法调试

vs2015写c++不是内部或外部命令,也不是可运行的程序或批处理文件

在 Windows 上构建 C++ 项目时,Tensorflow 2.3 无法解析机器生成的文件中的外部符号

下载好映象vs2015后 出现无法更改路径的问题 怎么解决