17

AppServices と UWP アプリケーションをブリッジするサンプル アプリケーションをデプロイしようとしています。サンプルは正常に実行およびビルドされますが、ガイドに従ってすべてをパッケージ化しようとすると、エラーが発生します。

パッケージガイドへのリンク

AppService Bridge のサンプル リポジトリはこちら。

エラーメッセージ:

 Error Manifest validation error: Line 36, Column 64, Reason: The file name  "BackgroundProcess.exe" declared for element "*[local-name()='Applications']/*[local-name()='Application']/*[local-name()='Extensions']/*[local-name()='Extension' and @Category='windows.fullTrustProcess']" doesn't exist in the package.

エラーを生成するコード スニペットを見つけましたが、まだ修正を見つけていません。

ファイルPackage.appxmanifestから次のコードを削除すると、Visual Studio はパッケージを正常にビルドします。

<Extensions>
  <uap:Extension Category="windows.appService">
    <uap:AppService Name="CommunicationService" />
  </uap:Extension>
  <desktop:Extension Category="windows.fullTrustProcess" Executable="BackgroundProcess.exe" />
</Extensions>

しかし、これは明らかに、この演習の要点であるプロセスへの橋渡しも取り除きます。

これはこの質問に多少関連しているようですが、違いは.exeがあり、その質問は.dllに対して答えているようです:

ストア用のユニバーサル アプリをビルドする際のエラー: 「ペイロードの一部ではないファイル 'MyAppName.dll' をマニフェストが参照しています。」

(UWP Tools を更新しても修正されなかったようです。)

4

4 に答える 4

7

数時間の調査の後、私自身の答えを見つけたので、ここに投稿しています。うまくいけば、これは将来他の人に役立つでしょう!

問題は、パッケージをビルドするときに BackgroundProcess.exe がプロジェクトに含まれていないことです。プロジェクトに含めるファイルは、.csprojファイルで定義されます。好みのテキスト エディターで開きます (忘れずに Visual Studio を閉じてください)。

アセットが定義されている場所を追加します。

<ItemGroup>
  <Content Include="Properties\Default.rd.xml" />
  <Content Include="Assets\LockScreenLogo.scale-200.png" />
  <Content Include="Assets\SplashScreen.scale-200.png" />
  <Content Include="Assets\Square150x150Logo.scale-200.png" />
  <Content Include="Assets\Square44x44Logo.scale-200.png" />
  <Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
  <Content Include="Assets\StoreLogo.png" />
  <Content Include="Assets\Wide310x150Logo.scale-200.png" />
</ItemGroup>

このようなものに:

<ItemGroup>
  <Content Include="Properties\Default.rd.xml" />
  <Content Include="Assets\LockScreenLogo.scale-200.png" />
  <Content Include="Assets\SplashScreen.scale-200.png" />
  <Content Include="Assets\Square150x150Logo.scale-200.png" />
  <Content Include="Assets\Square44x44Logo.scale-200.png" />
  <Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
  <Content Include="Assets\StoreLogo.png" />
  <Content Include="Assets\Wide310x150Logo.scale-200.png" />
  <Content Include="AppServiceBridgeSample.BackgroundProcess.exe">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
</ItemGroup>

ファイルの名前空間としてAppServiceBridgeSample .BackgroundProcces.exeを追加したことに注意してください。これが完全に必要かどうかはわかりませんが、これが私が修正した方法です。したがって、名前空間を修正するには、すべてのクラスの前にAppServiceBridgeSampleを追加する必要があります。また、Application > Assembly name & Default namespace の下の BackgroundProcess プロジェクトのプロパティにも、拡張子を追加します。

クラスの例:

namespace AppServiceBridgeSample.BackgroundProcess
{
    class Program
    {
    ....
    }
}

そして.xaml例:

<Page
  x:Class="AppServiceBridgeSample.UWP.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="using:AppServiceBridgeSample.UWP"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  x:Name="Main"
  mc:Ignorable="d">
  ...
</Page>

また、これは私が抱えていたエラーを自動的に修正しません。また、Build Eventを追加する必要があります。 BackgroundProcess (VS のプロジェクト) > プロパティ > ビルド イベント > ビルド後のイベント コマンド ラインの下で右クリックします。

xcopy /y /s "$(TargetPath)" "$(SolutionDir)UWP"

ソリューションをビルドしてデプロイすると、AppServiceBridgeSample.BackgroundProcess.exe ファイルが UWP プロジェクト ルート (ファイル エクスプローラーで表示) に存在する必要があります。

また、この調査中に Visual Studio 15 Enterprise Preview 3 に更新しました。これは、他のエラーが発生した場合にも役立つ可能性があります。

于 2016-08-13T14:02:34.473 に答える