为项目配置部署过程,并在使用 OctoPack 将 msbuild 的输出打包到 nuget 包时遇到一些问题。已决定获得有关该过程的反馈,可能是我做错了什么。
前提条件:
- .net 4.6 asp.net 项目,带有 Angular 4 前端和 Angular-cli 作为构建工具
- TFS 2013(使用 XAML 构建)作为构建机器
- GIT 作为源代码
- Octopus 作为部署框架
- 有几个环境,所以有几个带有转换的 web 配置 asp.net 和 angular-cli/webpack
- 几个发布配置文件,包括(每个环境一个):
- 要运行的 PreBuild 事件标记:npm run build
项目结构:
- web_project
- \src - 打字稿、html 和 scss 文件
- \图片
- \assets - 此文件夹不是项目/GIT 的一部分。它由 angular-cli/webpack 创建,包含编译、缩小和捆绑的 js 代码和 css 文件
- \其他文件(index.html、web.config 等)
构建过程:
Msbuid 编译 C# 代码,然后执行发布命令:编译 JS 代码并将所有内容复制到自定义输出文件夹中。
要运行构建和生成应用程序,我运行以下命令(本地或 TFS 服务器上):
MSBuild solution.sln /t:Build /p:DeployOnBuild=true /p:Configuration=development /p:PublishProfile="development"
此命令的输出包含我需要的所有内容(包括 Assets 文件夹):我可以将其复制到 IIS 中。
现在,我想集成 Octopack。我已经安装了 Octopack nuget 包并添加了附加参数 /p:RunOctoPack=true:
MSBuild solution.sln /t:Build /p:DeployOnBuild=true /p:Configuration=development /p:PublishProfile="development" /p:RunOctoPack=true
Octopack 创建一个 nuget 包,但它没有 Assets 文件夹。根据文档,Octopack 从 \bin 文件夹中获取所有内容,但 Assets 文件夹存在于 obj\Development 中。这不是解决方案的一部分,每次我运行 npm build 任务时都会重新创建这个文件夹。
现在,问题:
- 流程工作流程看起来好吗?
- 通过 msbuild 发布是唯一可能的选择吗?有没有其他方法可以让 msbuild 编译 C#、运行自定义 cmd/powershell 文件(运行 npm build)和转换 web 配置?
- 如何将其他文件夹包含到 Octopack 中(在我的例子中:带有已编译 JS 的资产)?
感谢您的反馈