2016-01-06 93 views
1

这个问题可以被认为是两年前的一个更新,问如何从visual studio 2015中的开放ASP.NET Core解决方案(then called ASP.net vnext,简称为ASP.NET 5)发布到我的本地网络中的另一台机器上,其中部署了IIS,并且应该用它来运行我正在编写的DNX运行时和ASP.NET应用程序。由于该向导不为我提供任何帮助,我相信我将不得不完全手动配置MSDEPLOY解决方案及其配置文件,或与其等效的其他内容。如何从Visual Studio 2015(+ U1)ASP.NET Core发布到Windows Server 2012 R2上的IIS?

自原来的问题以来,情况发生了很大变化,所以我要求提供ASP.NET 5和DNX 1.0 RC1。

还有一些related其他questions,要求如何做到这一点,并提到WebDeploy 3.6,也指近2年前的测试版本。

因此,我相信这个问题对于Visual Studio 2015应该有一个新的和不同的答案,现在ASP.NET 5已经发布了候选版本并且功能完整。现在怎么做?

还应该清楚我说的不是从我的Visual Studio解决方案上C:\DEV\WORKINGCOPY部署到我自己的机器的c:\inetpub\wwwroot,而是通过网络复制,无论是通过网络DAV或FTP或SMB共享,​​以运行IIS的Windows Server框。

我迄今为止尝试:

  • 使用内置在文件系统的方式发布到Web向导。结果似乎是可以通过web.cmd运行的,它将执行dnx和kestrel,但不会构建可从Windows Server 2012上的IIS 8.x运行的软件包。此外,发布到文件系统模式会创建一堆的东西,包括一组名为approot,logs和wwwroot的基本文件夹,我很确定IIS不应该设置为直接提供approot或logs文件夹。如果我从IIS中查看我的wwwroot \文件夹副本,则发现500内部服务器错误。这就是我期望IIS在不知道如何将web.config放在那里并对它做任何事情时所要做的事情。

  • 试图从命令提示符下手动使用dnu publishdnu pack,想到也许我可以使用结果来替换我的XYZ-publish.ps1 powershell文件PublishProfiles的内容。 dnu发布命令失败,“bower未被识别为内部或外部命令”。 dnu包成功了,但我不知道如何处理所产生的.nupkg文件以使它们在IIS上运行。

我的总体目标是:

  • 拥有一切在一次点击或者输入一个指令,包括任何预编译组件的任何捆绑和建筑物进行(的NuGet包作为v下一个与Assemblies inclassic .net相同的概念)。

  • 为了让自己和其他读者清楚,在您准备部署之前,一次性在IIS上设置的任务是什么,以及每次单击发布时为您完成的任务以及如何设置他们了。

这似乎是ASP的文档的基本领域。目前,.NET 5的功能非常弱,目前该工具仅针对那些想要将文件包部署到文件夹并从“dnx web”(kestrel)运行的用户或想要在Azure上部署的用户进程在发布向导中完全自动化),而不是那些希望部署到运行IIS的计算机的人。发布向导缺少这种非常明显的(对我来说)的情况;发布到我自己的Windows服务器框,并创建任何IIS脚手架,我需要这个工作。

+0

如果downvoters可以指出这个问题有什么问题,这将不胜感激。 –

+0

凉亭工具似乎不与Visual Studio一起分发。要安装NodeJs,然后输入'npm install bower -g'来安装bower,并将其作为路径中的命令行工具访问,则可能需要手动将'c:\ users \ youraccountname \ appdata \ roaming \ npm'添加到你的路径 –

+1

我认为这个想法是你通过脚本结合这些东西。 IOW,你创建一个运行bower/npm/gulp等的脚本,然后将dnu发布到本地或网络位置,并可选择发布。尽管今天的IIS故事非常糟糕。当前让IIS上的DNX应用程序破坏是一种痛苦。我怀疑这会在RC2中用新的工具解决,如果不是,那么肯定会通过发布。 –

回答

2

更新:Microsoft's Connect 2015 demo suite called Healthcare.biz包含基于powershell的部署方案(适用于azure),可能适用于本地IIS服务器。请参阅该GitHub仓库中的PublishAspNet5Website.ps1 powershell脚本。

这个问题有很多元素,我找不到任何一个来源来确定它们。

  1. 首先进行一些设置你的IIS服务器上是必需的,因为每this question,您必须选择将用于运行DNX/ASP.NET 5应用程序的应用程序池。您还应该创建一个虚拟文件夹,然后将其转换为应用程序。根据该链接的问题,你应该使用.NET 4池。 IIS服务器上的其他设置可能包括设置服务器端工具以接受来自Visual Studio(IDE内部)和msbuild命令行(持续集成服务器)部署工具的传入发布请求。

  2. 因为进入Visual Studio 2015的向导(包括更新1中的向导)没有提供诸如“部署到您的域上的Windows Server”之类的选择,您将不得不研究现有选项,如文件模式部署选项和Azure部署选项,并根据这两个起点之一选择一些混合方法。您的资产包括PowerShell的所有功能,以及dnx/dnu工具的所有功能,包括其整合功能。您将根据需要进行捆绑/编译/编译,然后将结果一起发送到MSDEPLOY工具,然后您需要为其配置(.pubxml)文件。您还可以选择完全忽略DEPLOY命令,并选择通过添加到dnx项目中的“分段”动词进行部署,以部署到分段服务器。

  3. 为了有任何希望将微型起始文件集修改为执行问题中指定作业所需的条件,您可能需要阅读MSDEPLOY上的文档。在互联网上搜索我发现,有一些示例.pubxml文件here,那里显示如何构建.pubxml。在部署配置文件文件夹中,至少需要一个正确构造的.pubxml文件和另一个具有相同基本名称的文件,而扩展名为.ps1(powershell),而不管您使用哪种技术,所以我认为它存在的唯一原因是您可以在PowerShell中完成其他任务。

样品.pubxml内容

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
NOTE: I'm pretty sure that the publishprovider should NOT be the one shown here. 
I do not know what it should be and will update this answer when I figure that fact out. 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>MSDeploy</WebPublishMethod> 
    <ADUsesOwinOrOpenIdConnect>False</ADUsesOwinOrOpenIdConnect> 
    <PublishProvider>AzureWebSite</PublishProvider> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish>http://ramsoftazurewebappdemo.azurewebsites.net</SiteUrlToLaunchAfterPublish> 
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <CompileSource>False</CompileSource> 
    <_DefaultDNXVersion>dnx-clr-win-x86.1.0.0-rc1-update1</_DefaultDNXVersion> 
    <UsePowerShell>True</UsePowerShell> 
    <IISCommand>web</IISCommand> 
    <WebRoot>wwwroot</WebRoot> 
    <WwwRootOut>wwwroot</WwwRootOut> 
    <IncludeSymbols>False</IncludeSymbols> 
    <Native>False</Native> 
    <IgnoreDNXRuntime>False</IgnoreDNXRuntime> 
    <MSDeployServiceURL>myservername.mydomain.biz:443</MSDeployServiceURL> 
    <DeployIisAppPath>MyWebAppPath</DeployIisAppPath> 
    <RemoteSitePhysicalPath /> 
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer> 
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod> 
    <EnableMSDeployBackup>True</EnableMSDeployBackup> 
    <UserName>$USERNAME</UserName> 
    <_SavePWD>True</_SavePWD> 
    <_DestinationType>AzureWebSite</_DestinationType> 
    </PropertyGroup> 
</Project> 
  • 它可能不会伤害到熟悉命令行选项可供MSDEPLOY直接,你可以调用自己,从该powershell ps1脚本,而不是使用.pubxml格式。下面是MSDEPLOY.EXE(在查找文档时也称为Microsoft Web Deploy V3在线)的示例:
  • "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" 
        -source:IisApp='C:\dev\PublishOut\YourWebApp\wwwroot 
        -dest:IisApp='YourIisAppName', 
        ComputerName='https://yourcomputername.yourdomain.biz/msdeploy.axd', 
        UserName='$USERNAME', 
        Password='secr3t', 
        IncludeAcls='False',AuthType='Basic' 
        -verb:sync -enableLink:contentLibExtension 
        -enableRule:DoNotDeleteRule -retryAttempts:3 
    
  • 如果你还没有尝试过呢,习惯了vNext中dnu packdnu publish选项点净效用(DNU)命令。这就是如何将您的ASP.NET源文件与DNX运行时副本一起捆绑起来,以便它可以在服务器端运行。对我而言,我无法使用dnu publish命令,该命令似乎是一个客户端资源发布阶段,它依赖于node.js(javascript)工具默认的名为bower的工具,我发现我必须手动安装为Visual Studio 2015 asp.net 5模板依赖于这个工具,但似乎并没有默认安装它(也许我错过了一个选项,当我安装Visual Studio,我会更新这个答案,如果是这样的话)。
  • 随着更多细节汇聚在一起,我将继续完善并扩展此答案。目前,我正在通过tutorials进行跟踪,讨论在部署到Azure或商业Internet托管问题时如何执行此操作,并且我会尝试将它们调整到内部服务器,您还负责配置IIS服务器以及任何必须在IIS服务器上配置的发布代理软件。

    相关问题