我有一個在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中的任何更改。卸載並重新加載解決方案中的特定項目是不夠的。 –