首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果工具支持,我如何有条件地构建.Net核心3.0?

如果工具支持,我如何有条件地构建.Net核心3.0?
EN

Stack Overflow用户
提问于 2019-11-04 04:07:00
回答 1查看 1.1K关注 0票数 2

我想将TargetFrameworks .csproj元素用于控制台应用程序的.Net Core3.0 (netcoreapp3.0)和.Net Framework4.8 (net48),如下所示:

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFrameworks>netcoreapp3.0;net48</TargetFrameworks>
        <AssemblyName>MyConsoleApp</AssemblyName>
    </PropertyGroup>
</Project>

但是,我希望同一个.csproj文件在旧的工具中优雅地降级,并且在工具不支持netcoreapp3.0 (比如Visual 2017)时只编译.Net Framework4.8。

我查看了条件编译文档,但它似乎只讨论编译时更改设置,而不是从一开始就进行编译。

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 08:56:51

我查看了条件编译文档,但它似乎只讨论编译时更改设置,而不是从一开始就进行编译。

是的,msbuild条件应该在 <Project>节点内工作。对于您的需求,我只能想象将conditions添加到第一个PropertyGroup( Condition="'$(VisualStudioVersion)'=='16.0'")中的一种可能方式,类似于这种格式:

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup Condition="'$(VisualStudioVersion)'=='16.0'">
    <OutputType>Exe</OutputType>
    <TargetFrameworks>netcoreapp3.0;net48</TargetFrameworks>
  </PropertyGroup>

  <PropertyGroup Condition="'$(VisualStudioVersion)'!='16.0'">
    <OutputType>Exe</OutputType>
    <TargetFramework>net48</TargetFramework>
  </PropertyGroup>

  <!-- ... other PropertyGroup with conditions-->

  <!--I use this script to confirm that when building the project in VS2017(msbuild15.0),the VS version is 15.0 while in VS2019(msbuild16.0), VS version is 16.0-->
  <Target Name="TestVersion" AfterTargets="build">
    <Message Text="version=>$(VisualStudioVersion)" Importance="high"/>
  </Target>
</Project>

不得不说,在大多数情况下,我们使用多个目标的类库项目,而不是控制台项目,不确定您这样做的具体原因。希望能有所帮助:)

更新:

要在没有安装VS的情况下构建.net项目,我们可以考虑使用Build Tools for VS package,下面是构建VS2019工具的链接(包含msbuil16.0)。在All downloads=>Tools for VS2019中,我们可以找到构建工具包。

为了确保可以使用此包中的msbuild.exe构建.net框架4.8和.net core3.0控制台项目,请确保在安装时启用了这些工作负载和组件:

我们可以导航到Individual Components,以确保启用了.net核心3.0和.net 4.8。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58687081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档