0

作为CI构建的一部分,我需要将一千兆字节的图像内容放入我的项目文件中,以便将其编译到我的appx中。包含文件的数据和列表频繁更改,因此不能事先包含在项目中。再加上庞大的规模将使我们的回购巨大。Programmicatically Adding Assets

除了破解打开csproj本身并添加一堆xml来做到这一点,有没有办法在构建时做到这一点?也许在构建前运行一个命令的东西?

+1

听起来好像你的图像不应该捆绑到应用程序中,而是通过Web服务或需要的时候访问。 –

+0

你用什么命令来提取文件?你有没有尝试过把这些作为预建? – stijn

+0

@GlenThomas这将是一个好主意,但该应用程序是在没有网络连接时使用的应用程序的类型。 – Darthg8r

回答

0

所以,我花了很多时间在这上面,事实证明,仅仅使用预构建步骤将不起作用,因为您实际上必须修改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); 
     } 
    } 
相关问题