Как создать автономное приложение .Net?

Я создал ядро ​​asp.net на ядре .Net и планировал его опубликовать на сервере Windows. Я не хочу ничего устанавливать на сервере, поэтому я хочу, чтобы приложение было автономным.

Я выбрал меню "Build- > Publish MyApp", а затем создал метод на основе файловой системы. Он сгенерировал следующие файлы в папке, и я скопировал его на сервер. Однако, как запустить его на сервере, который не имеет .Net ядра?

Name                                                                                                                   
----                                                                                                                   
refs                                                                                                                   
runtimes                                                                                                               
appsettings.json                                                                                                       
MyService.deps.json                                                                                        
MyService.dll                                                                                              
MyService.pdb                                                                                              
MyService.runtimeconfig.json                                                                               
Microsoft.ApplicationInsights.AspNetCore.dll                                                                           
Microsoft.ApplicationInsights.dll                                                                                      
Microsoft.AspNetCore.Antiforgery.dll                                                                                   
Microsoft.AspNetCore.Authorization.dll                                                                                 
Microsoft.AspNetCore.Cors.dll                                                                                          
Microsoft.AspNetCore.Cryptography.Internal.dll                                                                         
Microsoft.AspNetCore.DataProtection.Abstractions.dll                                                                   
Microsoft.AspNetCore.DataProtection.dll                                                                                
Microsoft.AspNetCore.Diagnostics.Abstractions.dll                                                                      
Microsoft.AspNetCore.Hosting.Abstractions.dll                                                                          
Microsoft.AspNetCore.Hosting.dll                                                                                       
Microsoft.AspNetCore.Hosting.Server.Abstractions.dll                                                                   
Microsoft.AspNetCore.Html.Abstractions.dll                                                                             
Microsoft.AspNetCore.Http.Abstractions.dll                                                                             
Microsoft.AspNetCore.Http.dll                                                                                          
Microsoft.AspNetCore.Http.Extensions.dll                                                                               
Microsoft.AspNetCore.Http.Features.dll                                                                                 
Microsoft.AspNetCore.HttpOverrides.dll                                                                                 
Microsoft.AspNetCore.JsonPatch.dll                                                                                     
Microsoft.AspNetCore.Localization.dll                                                                                  
Microsoft.AspNetCore.Mvc.Abstractions.dll                                                                              
Microsoft.AspNetCore.Mvc.ApiExplorer.dll                                                                               
Microsoft.AspNetCore.Mvc.Core.dll                                                                                      
Microsoft.AspNetCore.Mvc.Cors.dll                                                                                      
Microsoft.AspNetCore.Mvc.DataAnnotations.dll                                                                           
Microsoft.AspNetCore.Mvc.dll                                                                                           
Microsoft.AspNetCore.Mvc.Formatters.Json.dll                                                                           
Microsoft.AspNetCore.Mvc.Localization.dll                                                                              
Microsoft.AspNetCore.Mvc.Razor.dll                                                                                     
Microsoft.AspNetCore.Mvc.Razor.Host.dll                                                                                
Microsoft.AspNetCore.Mvc.TagHelpers.dll                                                                                
Microsoft.AspNetCore.Mvc.ViewFeatures.dll                                                                              
Microsoft.AspNetCore.Razor.dll                                                                                         
Microsoft.AspNetCore.Razor.Runtime.dll                                                                                 
Microsoft.AspNetCore.Routing.Abstractions.dll                                                                          
Microsoft.AspNetCore.Routing.dll                                                                                       
Microsoft.AspNetCore.Server.IISIntegration.dll                                                                         
Microsoft.AspNetCore.Server.Kestrel.dll                                                                                
Microsoft.AspNetCore.WebUtilities.dll                                                                                  
Microsoft.DotNet.InternalAbstractions.dll                                                                              
Microsoft.EntityFrameworkCore.dll                                                                                      
Microsoft.EntityFrameworkCore.Relational.dll                                                                           
Microsoft.EntityFrameworkCore.SqlServer.dll                                                                            
Microsoft.Extensions.Caching.Abstractions.dll                                                                          
Microsoft.Extensions.Caching.Memory.dll                                                                                
Microsoft.Extensions.Configuration.Abstractions.dll                                                                    
Microsoft.Extensions.Configuration.Binder.dll                                                                          
Microsoft.Extensions.Configuration.dll                                                                                 
Microsoft.Extensions.Configuration.EnvironmentVariables.dll                                                            
Microsoft.Extensions.Configuration.FileExtensions.dll                                                                  
Microsoft.Extensions.Configuration.Json.dll                                                                            
Microsoft.Extensions.DependencyInjection.Abstractions.dll                                                              
Microsoft.Extensions.DependencyInjection.dll                                                                           
Microsoft.Extensions.DependencyModel.dll                                                                               
Microsoft.Extensions.DiagnosticAdapter.dll                                                                             
Microsoft.Extensions.FileProviders.Abstractions.dll                                                                    
Microsoft.Extensions.FileProviders.Composite.dll                                                                       
Microsoft.Extensions.FileProviders.Physical.dll                                                                        
Microsoft.Extensions.FileSystemGlobbing.dll                                                                            
Microsoft.Extensions.Globalization.CultureInfoCache.dll                                                                
Microsoft.Extensions.Localization.Abstractions.dll                                                                     
Microsoft.Extensions.Localization.dll                                                                                  
Microsoft.Extensions.Logging.Abstractions.dll                                                                          
Microsoft.Extensions.Logging.Console.dll                                                                               
Microsoft.Extensions.Logging.Debug.dll                                                                                 
Microsoft.Extensions.Logging.dll                                                                                       
Microsoft.Extensions.Logging.Filter.dll                                                                                
Microsoft.Extensions.Logging.TraceSource.dll                                                                           
Microsoft.Extensions.ObjectPool.dll                                                                                    
Microsoft.Extensions.Options.ConfigurationExtensions.dll                                                               
Microsoft.Extensions.Options.dll                                                                                       
Microsoft.Extensions.PlatformAbstractions.dll                                                                          
Microsoft.Extensions.Primitives.dll                                                                                    
Microsoft.Extensions.WebEncoders.dll                                                                                   
Microsoft.Net.Http.Headers.dll                                                                                         
Newtonsoft.Json.dll                                                                                                    
NLog.config                                                                                                            
NLog.dll                                                                                                               
NLog.Extensions.Logging.dll                                                                                            
Remotion.Linq.dll                                                                                                      
System.Collections.NonGeneric.dll                                                                                      
System.Collections.Specialized.dll                                                                                     
System.ComponentModel.Primitives.dll                                                                                   
System.ComponentModel.TypeConverter.dll                                                                                
System.Data.Common.dll                                                                                                 
System.Diagnostics.Contracts.dll                                                                                       
System.Interactive.Async.dll                                                                                           
System.Net.WebSockets.dll                                                                                              
System.Runtime.Serialization.Primitives.dll                                                                            
System.Text.Encodings.Web.dll                                                                                          
web.config                                                                                                             

Ответ 1

Решение .NET Core 1.0:

1) Откройте файл project.json и удалите type = "platform" из зависимости netcoreapp1.0:

"frameworks": {
  "netcoreapp1.0": {
    "dependencies": {
      "Microsoft.NETCore.App": {
        "version": "1.0.1"
      }
    }
  } 
}

2) Укажите время выполнения, на которое вы хотите настроить таргетинг (.NET Core Runtime IDendifier:

"runtimes": {
     "win7-x64": {},
     "osx.10.10-x64": {},
     "ubuntu.14.04-x64": {}
}

3) Запустите dotnet restore в командной строке на уровне проекта или пакета решений.

4) Сборка:

dotnet build -r win7-x64
dotnet build -r osx.10.10-x64
dotnet build -r ubuntu.14.04-x64

5) Опубликовать:

dotnet publish -c release -r win7-x64
dotnet publish -c release -r osx.10.10-x64
dotnet publish -c release -r ubuntu.14.04-x64

В папке %ProjectFolder%\bin\Release\netcoreapp1.0\ будет папка для каждой опубликованной вами версии.

Кредит переходит на Скотт Гензельман.

Стоит также прочитать официальную статью о развертывании приложений

Ответ 2

См. шаг № 3 в инструкциях, которые вы указали. Автономные приложения зависят от Microsoft.NETCore.App без типа "Платформа". Сравните https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore/project.json#L58-L61 vs https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore.Standalone/project.json#L68-L70

Также шаг 4: им нужен список журналов времени для публикации, так что вы получите все правильные двоичные файлы naitve: https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore.Standalone/project.json#L80-L89

Это позволит вам xcopy развернуть сайт и запустить его в качестве консольного приложения (должен быть файл MyApp.exe для Windows), но вы не сможете запустить его в IIS без AspNetCoreModule (установленного через пакет хостинга).

Ответ 3

Отредактируйте файл .csproj и укажите RuntimeIdentifier в группе свойств для окон, ubuntu, osx.

<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RuntimeIdentifiers>win10-x64;osx.10.10-x64;ubuntu.14.04-x64</RuntimeIdentifiers>
  </PropertyGroup>

Чем сохранить и опубликовать приложение для разных целевых машин

dotnet publish -c release -r win10-x64
dotnet publish -c release -r osx.10.10-x64
dotnet publish -c release -r ubuntu.14.04-x64

Подробнее читайте в блоге по созданию и развертыванию приложения .Net Core на Windows/Linux/Mac http://www.spicy-dotnet.com/2017/10/creating-and-deploying-net-core.html