Jus*_*ica 5 c# asp.net msbuild cakebuild
我正在为一些应用程序编写一些新的构建脚本,当前脚本使用MSBuild构建所有项目,然后手动将所有内容(视图,脚本等...)和bin文件夹手动复制到要压缩的工件文件夹; 这要求所有不属于ASP.NET项目的bin目录的文件和文件夹都要在配置文件中明确列出,这当然非常容易出错.
在指定输出目录还包含内容文件时,有没有办法使用MSBuild?理想情况下,这可以在不创建发布配置文件的情况下完成,因为当前的部署方法无法更改,因此我需要确保我的构建工件与当前部署方法匹配.
如果它有帮助我计划使用Cake作为构建机制.
小智 3
利用蛋糕,我想出了一个有点混乱的解决方案:
var excludedFiles = new List<string>{"Settings.settings", "packages.config"};
var artifactDir = "./Artifact";
var solutionFile = "./MySolution.sln";
Task("Package")
.IsDependentOn("Build")
.Does(() =>
{
var solution = ParseSolution(solutionFile);
foreach (var project in solution.Projects)
{
var parsedProject = ParseProject(project.Path);
var binDir = project.Path.GetDirectory() + Directory("/bin");
if(project.Name.Contains("Host"))
{
var soaDir = Directory(artifactDir + "/SOA");
CreateDirectory(soaDir);
CopyDirectory(binDir, soaDir + Directory("bin"));
foreach(var file in parsedProject.Files)
{
if(!file.Compile && excludedFiles.All(x=> !file.FilePath.ToString().Contains(x)))
{
var newFilePath = soaDir + File(file.RelativePath);
CreateDirectory(((FilePath)newFilePath).GetDirectory());
CopyFile(file.FilePath, newFilePath);
}
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
这里的包任务将在解决方案中循环解析项目,以查找名称中包含“Host”一词的任何项目;这就是我们所有网络应用程序的命名方式,因此对我们来说它是安全的,但绝对可以改进。
一旦我们确定了 ASP.NET 项目,我们就会复制其 bin 内容,然后循环遍历其文件以查找任何未标记为编译的文件,并排除一些特定文件,例如设置文件和 nuget 包配置文件。
最后,我们能够使用该文件相对路径将文件复制到工件目录中。
| 归档时间: |
|
| 查看次数: |
980 次 |
| 最近记录: |