2015-06-19 38 views
4

我知道DNX提供了调用ASP.NET v5应用程序的各种新包管理功能的能力。无DNX的ASP.NET v5

但是,是否有可能“建立”这些应用程序之一(使用DNX等)并“预编译”它们,以便可以将它们部署到(使用Octopus)并在未经修改的IIS服务器上运行。 NET框架4.5?

我不得不创建项目时,虽然我们构建服务器上安装DNX不太可能是一个问题,它太很快将其推出对我们的生产Web服务器的目标.NET 4.5的选项。

+0

你尝试过'dnu build'和/或'dnu publish'吗? – Pawel

+0

是的,它的工作原理 - 我发布了一个答案。 :) –

回答

1

我发现这确实是可能的。

我在同一目录中project.json文件运行以下命令发布我的应用程序:

dnvm list 

这仅列出了:使用发现

dnu publish --runtime runtimeX --no-source 

runtimeX是一个合适的安装运行安装运行时,虽然所以下面需要得到全名作为参数用来dnu

dnvm name default 

您可以检查dnvm的“名称”命令ARGS但本质上指定的处理器位数和运行时的版本,你会得到正确格式的名称后面。

一旦你做到了这一点,采取bin\output内容,并在IIS或IISExpress运行起来。尽管我将这个输出复制到了我的另一个尚未安装VS2015/DNX工具的开发虚拟机,但它对我来说就像是一种魅力。

+0

你没有运行没有DNX的asp.net 5。 dnu publish --runtime选项包含publish文件夹中指定的DNX版本的本地副本。所以是的,你可以绑定与应用程序的依赖关系,但依赖依然存在。如果从部署位置删除运行时文件夹,则应用程序将失败。 –

+0

这是一个公平点。我想我的意思是我想要部署到只具有常规v5之前的ASP.NET安装的计算机。 –

1

号你说你可以针对.NET 4.5的ASP.NET但这是不完全准确的,你可以针对dnx451是净完整的框架4.5.1 + DNX。

以同样的方式作为.Net框架DNX是不是“安装”。它不是一个更像xcopy的安装。 DNVM只需下载DNX的特定副本并将其放入c:\ Users \ .dnx \ runtimes下的文件夹中。如果你不想使用dnx,你可以复制文件夹。当应用程序引用了运行时的特定版本,它只是按照惯例要求dnx.exe正确的文件夹内 c:\Users\<User>\.dnx\runtimes\<dnx-runtimetype-os-architecture.version>\bin\dnx.exe

如果你想甚至避免单独的步骤中dnu publish--runtime选项将包括应用程序文件夹内的复制结构/批准/运行时从本地开发机器获取副本。尼尔的答案提供了更多细节。它避免了单独安装dnx的需求,但仍然使用了dnx。使用--no-source不是必需的,并且不依赖于将运行时与应用程序捆绑在一起的决定。

如果您想知道IIS如何“查找”dnx以开始执行,当您发布项目时,项目将包含在/wwwroot/bin/AspNetLoader.dll中。这为IIS提供了一个入口点。还包括一个小的web.config,它提供了dnx可执行文件的位置。

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <appSettings> 
    <add key="bootstrapper-version" value="1.0.0-beta4" /> 
    <add key="runtime-path" value="..\approot\runtimes" /> 
    <add key="dnx-version" value="1.0.0-beta6-12120" /> 
    <add key="dnx-clr" value="coreclr" /> 
    <add key="dnx-app-base" value="..\approot\src\AspDotNetFiveDemo.Web" /> 
    </appSettings> 
</configuration> 

这个'引导'实际上只是为了向后兼容IIS。它不在其他环境中使用。例如,如果使用http.sys DNX进行自我托管。exe只是直接调用并提供程序集和参数。

相关问题