Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用.NET标准目标框架和CMake生成Visual Studio项目_.net_Visual Studio_Cmake - Fatal编程技术网

如何使用.NET标准目标框架和CMake生成Visual Studio项目

如何使用.NET标准目标框架和CMake生成Visual Studio项目,.net,visual-studio,cmake,.net,Visual Studio,Cmake,我正试图用CMake生成一个Visual Studio C#项目。这就是我到目前为止所做的: cmake_minimum_required(VERSION 3.10) project(myProject VERSION 0.1.0 LANGUAGES CSharp) add_library(myLib SHARED src/file1.cs src/file2.cs src/file3.cs) set_property(TARGET myLib PROPERTY V

我正试图用CMake生成一个Visual Studio C#项目。这就是我到目前为止所做的:

cmake_minimum_required(VERSION 3.10)

project(myProject VERSION 0.1.0 LANGUAGES CSharp)

add_library(myLib SHARED
    src/file1.cs
    src/file2.cs
    src/file3.cs)

set_property(TARGET myLib PROPERTY VS_DOTNET_TARGET_FRAMEWORK_VERSION "netstandard1.4")
我从Visual Studio生成的.csproj文件中获得框架名称,该文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
  </PropertyGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk" ...

netstandard1.4
这就是我为.NET标准1.4构建库所需要的。但是,CMake生成了以下内容(在所有其他内容中):

netstandard1.4

这似乎是无效的,因为VisualStudio抱怨它无法打开项目。我在CMake文档中没有找到任何设置
而不是
的内容。这可能吗?

这就是我如何正确生成项目的方法。当心,这是一个丑陋的黑客在这样做之前,请检查CMake是否已更新以正确支持此操作

因此,首先,
VS_DOTNET\u TARGET\u FRAMEWORK\u版本
是不必要的。要添加正确的
,可以使用此行:

set_property(TARGET myLib PROPERTY VS_GLOBAL_TargetFramework "netstandard1.4")
您还想添加这一点,因为出于我无法理解的原因,CMake认为生成一个默认使用C#3作为语言级别的项目是一个好主意:

set_property(TARGET myLib PROPERTY VS_GLOBAL_LangVersion "6")
生成的项目将无法在Visual Studio中正确打开。这是因为在.NETCore中,对CMake目前无法生成的csproj格式进行了一些更改。为供参考,请参阅。CMake无法正确地生成它们,因此我将首先告诉您需要进行哪些修改,然后为您提供一些可以完成这些修改的黑客PowerShell脚本

Main.csproj文件 现在根目录上有一个属性
Sdk
,我们需要这样设置:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
  </PropertyGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk" ...