0
作为CI构建的一部分,我需要将一千兆字节的图像内容放入我的项目文件中,以便将其编译到我的appx中。包含文件的数据和列表频繁更改,因此不能事先包含在项目中。再加上庞大的规模将使我们的回购巨大。Programmicatically Adding Assets
除了破解打开csproj本身并添加一堆xml来做到这一点,有没有办法在构建时做到这一点?也许在构建前运行一个命令的东西?
作为CI构建的一部分,我需要将一千兆字节的图像内容放入我的项目文件中,以便将其编译到我的appx中。包含文件的数据和列表频繁更改,因此不能事先包含在项目中。再加上庞大的规模将使我们的回购巨大。Programmicatically Adding Assets
除了破解打开csproj本身并添加一堆xml来做到这一点,有没有办法在构建时做到这一点?也许在构建前运行一个命令的东西?
所以,我花了很多时间在这上面,事实证明,仅仅使用预构建步骤将不起作用,因为您实际上必须修改csproj文件。在编译之后,简单地使用MakeAppx将不起作用,编译过程实际上会更改您的appxmanifest。
我最终编写了一个微小的控制台应用程序,它在调用MSBuild之前在脚本中完成这项工作。我已经将它包含在下面。
private static void AddDirectoryToProject(string sourceDir, Project project)
{
var dir = new DirectoryInfo(sourceDir);
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
var virtualStart = file.FullName.IndexOf("sourcebinaries");
var virtualPath = file.FullName.Substring(virtualStart);
project.AddItemFast("Content", virtualPath, new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("CopyToOutputDirectory", "PreserveNewest")
});
Console.WriteLine(virtualPath);
}
foreach (var subDir in dir.GetDirectories())
{
AddDirectoryToProject(subDir.FullName, project);
}
}
听起来好像你的图像不应该捆绑到应用程序中,而是通过Web服务或需要的时候访问。 –
你用什么命令来提取文件?你有没有尝试过把这些作为预建? – stijn
@GlenThomas这将是一个好主意,但该应用程序是在没有网络连接时使用的应用程序的类型。 – Darthg8r