我正在使用刚刚发布的最新.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?
答案 0 :(得分:5)
你是对的,当你只指定<TargetFramework>netcoreapp1.1</TargetFramework>
时,默认是你的应用程序定位最新的运行时:1.1.1
。 Here's the PR做出了改变。就像你提到的那样,这意味着你的应用程序不再在只有1.1.0
的机器上运行。
有什么办法可以配置dotnet,默认情况下netcoreapp1.1的目标是1.1.0?
在我看来,你有两个选择:
dotnet publish
时,您可以传递MSBuild参数。所以你可以说dotnet publish -c Release /p:RuntimeFrameworkVersion=1.1.0
您可以在要为默认属性的所有Directory.Build.props
文件上方添加.csproj
文件。此.props
文件将自动导入其下方的所有.csproj
文件中。您可以在其中设置常用属性:
<Project>
<PropertyGroup>
<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>
</PropertyGroup>
</Project>
现在,您的所有项目都会自动设置此属性。