2016-10-03 112 views
1

当我注意到here时,我们有两种类型的部署:“依赖于框架的部署”和“独立部署”。使用dotnet框架的asp.net核心“基于框架的部署”

但它没有描述如何在net451上获得“依赖于框架的部署”。

如何在net451上获得“依赖于框架的部署”?

这里是我的project.json:

{ 
    "webroot": "wwwroot", 
    "userSecretsId": "aspnet-AdsProject-110defb3-febe-4379-a8a3-0a8b20607a27", 
    "version": "1.0.0-*", 
    "compilationOptions": { 
    "emitEntryPoint": true 
    }, 

    "dependencies": { 
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0", 
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.1", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Routing": "1.0.1", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1", 
    "Microsoft.EntityFrameworkCore.SqlServer.Design": { 
     "version": "1.0.1", 
     "type": "build" 
    }, 
    "Microsoft.EntityFrameworkCore.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
    "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.1", 
    "Microsoft.Extensions.Caching.Abstractions": "1.0.0", 
    "Microsoft.Extensions.Caching.Memory": "1.0.0", 
    "Microsoft.Extensions.Configuration.Abstractions": "1.0.0", 
    "StackExchange.Redis": "1.1.605", 
    "Dapper": "1.50.2", 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Microsoft.AspNetCore.Routing.Abstractions": "1.0.1", 
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0", 
    "Abot": "1.5.1.50" 
    }, 

    "tools": { 
    "BundlerMinifier.Core": "2.0.238", 
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final", 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
     "version": "1.0.0-preview2-final", 
     "imports": [ 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "frameworks": { 
    "net451": { 
     "frameworkAssemblies": { 
     "System.Runtime.Serialization": "4.0.0.0", 
     "System.ServiceModel": "4.0.0.0" 
     } 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "**/*.cshtml", 
     "config.json", 
     "config.Development.json", 
     "web.config" 
    ], 
    "exclude": [ 
     "node_modules", 
     "bower_components", 
     "SqlScripts", 
     "PrivateJs", 
     "**.xproj", 
     "**.user", 
     "**.vspscc" 
    ] 
    }, 

    "scripts": { 
    "prepublish": [ "bower install", "dotnet bundle", "npm install" ], 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 

回答

1

简短的回答:你已经拥有它。

针对net451,您将目标框架设置为.NET Framework 4.5.1,并且在安装应用程序之前必须使用.NET Framework可再发行组件(Dotnetfx.exe)将其安装在目标机器上。换句话说,.NET Framework应用程序总是依赖于框架。

另一方面,自包含的部署(SCD)仅涉及到.NET核心框架,并允许与应用程序一起部署框架:

对于一个自包含的部署,部署不仅您的应用程序和任何第三方依赖项,而是您构建应用程序的.NET Core版本。

+0

当我发布该项目时,dotnet也会生成一个.exe文件。正如文章所述,.exe文件以SCD模式生成。 “ ”SCD包含一个可执行文件(例如Windows应用程序的Windows平台上的app.exe)“和”FDD包含可以通过命令行使用dotnet实用程序启动的.dll文件“ –

+0

我不想。 exe文件。每次我想发布项目时,我都必须停止生产应用程序。 –

+0

.exe是由于您的目标框架是.NET Framework而生成的,它对.NET Core Platform一无所知,因此您拥有“旧类型”独立应用程序(建议阅读此文章https://blogs.msdn.microsoft.com/ cesardelatorre/2016/06/28/running-net-core-apps-on-multiple-frameworks-and-what-the-target-framework-monikers-tfms-are-about /)。关于“在发布过程中停止” - 如果您更改程序集,您无论如何都需要重新启动进程......也许您的意思是使用dotnet-watch,但它也会在检测到源代码更改时重新启动指定的应用程序。 – Set