发布独立应用程序.NET Core应用程序

pwa*_*was 5 .net-core asp.net-core

最近,我使用 .NET Core Preview 4 SDK 安装了 VS 2017 RC。在新的SDK中,没有project.json,只有csproj文件:

<PropertyGroup>
   <OutputType>winexe</OutputType>
   <TargetFramework>netcoreapp1.0</TargetFramework>
     <PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup
Run Code Online (Sandbox Code Playgroud)

问题是现在是dotnet publish输出dll,而不是exe文件。我尝试过跑步dotnet publish -r win10-x64,但它甚至无法编译。

如何在 dotnet 1.1 Preview 中制作独立的应用程序?也许我应该runtime在 csproj 中指定部分(就像 json 中所要求的那样)?

Gre*_*reg 5

我相信,您应该执行以下操作:

dotnet build -r win10-x64
dotnet publish -c release -r win10-x64
Run Code Online (Sandbox Code Playgroud)

您需要首先构建它。

另一件需要指出的事情是,.csproj 和 project.json 功能几乎相同。所以 .csproj 应该配置:

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.0</TargetFramework>
    <VersionPrefix>1.0.0</VersionPrefix>
    <DebugType>Portable</DebugType>
    <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="**\*.cs" />
    <EmbeddedResource Include="**\*.resx" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.NETCore.App">
      <Version>1.0.1</Version>
    </PackageReference>
    <PackageReference Include="Newtonsoft.Json">
      <Version>9.0.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.NET.Sdk">
      <Version>1.0.0-alpha-20161102-2</Version>
      <PrivateAssets>All</PrivateAssets>
    </PackageReference>
  </ItemGroup>

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
Run Code Online (Sandbox Code Playgroud)

以上是指定您所追求的核心/自包含功能的正确方法。您可以在这里找到很多相关信息。