如何创建一个独立的.Net核心应用程序?

问题描述:

我在.Net核心上创建了一个asp.net核心,并计划将其发布到Windows服务器上。我不想在服务器上安装任何东西,所以我希望应用程序是自包含的。如何创建一个独立的.Net核心应用程序?

我选择菜单“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                            
+2

创建和部署的.Net核心应用的博客我也想知道这个答案,因为[自包含部署的官方文档](https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/index#self-contained -deployments-scd)未能充分解释它。 –

+0

您是否配置应用程序以发出入口点(即控制台应用程序)? –

+0

我认为你需要在服务器上安装ASP.NET Core Server Hosting Bundle,因为ASP.NET Core并不遵循传统的IIS管道。 AspNetCoreModule(将随软件包一起安装)将HTTP/HTTPS流量从IIS管道重定向到ASP.Net Core进程。 关于此的更多信息: https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS –

请参阅您链接的说明中的步骤#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 for Windows),但如果没有AspNetCoreModule(通过Hosting包安装),您将无法在IIS中运行它。

.NET 1.0核心逐溶液:

1)打开project.json文件和从netcoreapp1.0依赖性除去type = "platform"

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

2)指定所希望的目标(.NET Core Runtime IDentifier catalog)运行时间:

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

3)在项目的命令提示符下运行dotnet restore或解决方案der水平。

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\将是您发布为每个运行的文件夹。

积分为Scott Hanselman

值得一读也the official article about Application Deployment

+3

太糟糕'project.json'已弃用。 – ProfK

编辑的.csproj文件,并指定在属性组的RuntimeIdentifier用于Windows,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 

欲了解更多详情请阅读在Windows/Linux的/ Mac的 http://www.spicy-dotnet.com/2017/10/creating-and-deploying-net-core.html