我正在尝试在我们的构建服务器上构建一个VS2015 ASP.NET v5 Web应用程序(基本上,在Visual Studio之外)。我们现有的脚本只是使用csproj文件调用msbuild,但是我得到了这个项目:
项目文件为空
在Visual Studio之外“构建”这些新的Web应用程序的“故事”是什么?我相信他们仍然可以针对.NET 4.5(我希望如此,因为我们不会很快升级Web服务器)所以假设它是可能的。
答案 0 :(得分:2)
在dnx项目中没有.csproj dnu构建项目所需的一切都包含在project.json
中。有一个xproj文件,但你可以忽略它。微软终于决定看到这个问题并将xproj用于VS特定的东西"和IDE不可知的项目详细信息放在project.json。
因此,要构建一个dnx项目,您只需要正确版本的dnx和项目源代码。现在AFAIK没有开箱即用的解决方案,但一切都是通过命令行命令完成的,所以脚本应该很容易。这一切都取决于您想要构建的解决方案的稳健性。
要从命令行构建一个dnx项目(假设您安装了正确的dnx并设置为active),它只是两个命令。 dnu restore
运行依赖性检查,dnu(dnx的一部分)具有内置的nuget客户端,因此如果需要,它将伸出并获取依赖项。 dnu build
运行实际编译。
所以cd到项目根目录(包含project.json)并运行dnu restore
然后dnu build
。
如果您需要动态支持不同的dnx版本,它会变得更加复杂。请记住,dnx版本由运行时(coreclr或clr),体系结构(x86,x64等)和版本号标识。因此,如果你只是在clr(完整的.net运行时)上说x64构建,它消除了两个变量,但是如果项目需要比构建服务器上安装的更新版本的运行时会发生什么?举个例子说你在构建服务器上安装了(手动使用dnvm)dnx-clr-win-x64.1.0.0-beta4但是在将来某个时候开发人员需要dnx-clr-win-x64.1.0.0- beta6-1200来解决一个错误。
简单的解决方案只是根据需要安装新的运行时版本,并根据所需的最新版本构建所有项目。这并不像它最初听起来那么糟糕。一旦dnx退出测试版,运行时的更改应该不常见。请记住,运行时是非常低级别的代码和非托管dll。它是BCL位于其上的引导存根。希望对于给定的操作系统,体系结构和运行时,不应该对dnx进行那么多的更改。
对于更强大的解决方案,您可以使用脚本来查找项目所需的运行时版本。它位于解决方案级别global.json
中。然后,该脚本可以使用dnvm list
来确定是否已安装该运行时。如果没有,请使用dnvm install
或dnvm upgrade
安装所需的版本。在开始构建之前,它将使用命令dnvm use
激活正确的运行时,然后继续dnu restore
和dnu build
。
老实说,我希望能有一些非常强大的解决方案出现。任务运行者(gulp,grunt等)是.NET 5中的一等公民。很可能你的工作流程涉及bower用于客户端依赖项解析,npm,grunt / gulp和一些任务包,用于缩小js文件。构建服务器也需要所有这些,因此将构建任务作为grunt或gulp包似乎非常合适。