我有一个在Visual Studio 2017中创建的C#XAML UWP项目,我有一些资源需要转换并部署到AppX包中。但是,我无法直接将其转换资产部署到AppXPackagePayload中。如何将目标中生成的内容部署到带有MSBuild的UWP应用程序中的AppX包中
我已经在RawData文件夹中用香草C#XAML应用程序和几个文本文件创建了一个简化的测试用例。我希望将文本文件转换(现在已复制)并部署到我的AppX中的Data文件夹。
我加了Xaml.CSharp.targets进口前右下面我的csproj(我说只是为了调试ConvertedData项目类型):
<ItemGroup>
<RawData Include="RawData\**\*.*" />
</ItemGroup>
<Target Name="ConvertData" BeforeTargets="Compile" Inputs="@(RawData)" Outputs="Data\%(RawData.RecursiveDir)%(RawData.Filename)%(RawData.Extension)">
<ItemGroup>
<ConvertedData Include="Data\%(RawData.RecursiveDir)%(RawData.Filename)%(RawData.Extension)" />
<Content Include="Data\%(RawData.RecursiveDir)%(RawData.Filename)%(RawData.Extension)" />
</ItemGroup>
<Message Importance="high" Text="Creating Data: @(RawData) -> Data\%(RawData.RecursiveDir)%(RawData.Filename)%(RawData.Extension)" />
<Copy SourceFiles="%(RawData.Identity)" DestinationFiles="Data\%(RawData.RecursiveDir)%(RawData.Filename)%(RawData.Extension)" />
</Target>
<Target Name="DisplayContent" AfterTargets="ConvertData" BeforeTargets="Compile">
<Message Importance="high" Text="RawData: @(RawData)" />
<Message Importance="high" Text="ConvertedData: @(ConvertedData)" />
<Message Importance="high" Text="Content: @(Content)" />
</Target>
日志输出时的建筑是这样的:
1> Creating Data: RawData\Hello.txt -> Data\Hello.txt
1> Creating Data: RawData\World.txt -> Data\World.txt
1> RawData: RawData\Hello.txt;RawData\World.txt
1> ConvertedData: Data\Hello.txt;Data\World.txt
1> Content: Properties\Default.rd.xml;Assets\LockScreenLogo.scale-200.png;Assets\SplashScreen.scale-200.png;Assets\Square150x150Logo.scale-200.png;Assets\Square44x44Logo.scale-200.png;Assets\Square44x44Logo.targetsize-24_altform-unplated.png;Assets\StoreLogo.png;Assets\Wide310x150Logo.scale-200.png;Data\Hello.txt;Data\World.txt
这是预期的。我现在有一个Data文件夹在我的项目文件夹中包含我的“转换”文本文件。但是,即使将应用程序部署为内容,但在部署应用程序时,文件夹中的文件也不会将其放到AppX文件夹中。目标中未生成的所有其他资产都已部署。看起来好像在目标中创建的内容项不会被添加到AppXPackagePayload中。
如果我添加以下目标公司的ItemGroup:
<AppxPackagePayload Include="Data\%(RawData.RecursiveDir)%(RawData.Filename)%(RawData.Extension)">
<TargetPath>Data\%(RawData.RecursiveDir)%(RawData.Filename)%(RawData.Extension)</TargetPath>
</AppxPackagePayload>
然后在数据文件夹中的项目将部署到AppX中。但是,我觉得只需将我的项目添加到目标中的内容就足以实现部署。难道我做错了什么?
谢谢!
您是否尝试重新加载项目? –
有很多次!实际上,在我上面概述的测试案例中,我直接编辑了csproj文件,因此Visual Studio每次进行编辑时都会强制重新加载解决方案。我也尝试重新启动VS. –
从Nico的评论开始,值得澄清的是,如果代码位于外部的props文件中而不是直接在csproj中,则必须关闭并重新加载整个解决方案以查看VS中的任何更改。卸载并重新加载解决方案中的特定项目是不够的。 –