dotnet构建到特定的框架版本

时间:2017-03-10 19:22:25

标签: .net .net-core

我正在使用刚刚发布的最新.NET SDK(1.0.1,从https://dotnetcli.blob.core.windows.net/dotnet/Sdk/1.0.1/dotnet-dev-debian-x64.1.0.1.tar.gz安装)以使用" dotnet publish构建项目。"出于这个问题范围之外的原因,我正在尝试构建应用程序,以便它们运行在稍微较旧版本的框架上(1.0.3和1.1.0,而不是最新的1.0.4和1.1.0)。

如果我构建了一个指定<TargetFramework>netcoreapp1.1</TargetFramework>的项目,它就不会在只安装了1.1.0版本的平台上运行。

看起来我可以在每个项目的基础上在csproj中指定<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>,但有没有办法可以配置dotnet,以便默认定位netcoreapp1.1目标1.1.0?

1 个答案:

答案 0 :(得分:5)

你是对的,当你只指定<TargetFramework>netcoreapp1.1</TargetFramework>时,默认是你的应用程序定位最新的运行时:1.1.1Here's the PR做出了改变。就像你提到的那样,这意味着你的应用程序不再在只有1.1.0的机器上运行。

  

有什么办法可以配置dotnet,默认情况下netcoreapp1.1的目标是1.1.0?

在我看来,你有两个选择:

  1. 当您致电dotnet publish时,您可以传递MSBuild参数。所以你可以说dotnet publish -c Release /p:RuntimeFrameworkVersion=1.1.0
  2. 您可以在要为默认属性的所有Directory.Build.props文件上方添加.csproj文件。此.props文件将自动导入其下方的所有.csproj文件中。您可以在其中设置常用属性:

    <Project>
      <PropertyGroup>
        <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>
      </PropertyGroup>
    </Project>
    
  3. 现在,您的所有项目都会自动设置此属性。