【问题标题】:Windows 10 (UWP) manifest issueWindows 10 (UWP) 清单问题
【发布时间】:2016-11-13 07:57:30
【问题描述】:

我的 UWP 应用有这些 package.manifest 扩展内容:

  <Extensions>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>MobilePos.Win10.exe</Path>
        <ActivatableClass ActivatableClassId="PclUtilitiesUniversel.CompanionInfo" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="PclUtilitiesUniversel.DeviceManager" ThreadingModel="both" />
      </InProcessServer>
    </Extension>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>PCLServiceUniversel.dll</Path>
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.TransOut" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.PCLService" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.TransIn" ThreadingModel="both" />
      </InProcessServer>
    </Extension>
  </Extensions>

但是当我编译(也尝试在调试/发布模式下重建)项目时,生成的 appxmanifest.xml 会自动添加一个新的“CLRHost.dll”标签,这会产生错误(在 Visual Studio 2015 中):

错误 C00CE012:应用清单验证错误:应用清单必须 根据模式有效:第 63 行,第 8 列,原因:在基数中 definito nella DTD o nello schema, il contenuto dell'elemento "{http://schemas.microsoft.com/appx/manifest/foundation/windows10}InProcessServer" è 不完整。预览: {http://schemas.microsoft.com/appx/manifest/foundation/windows10}ActivatableClass.

  <Extensions>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>MobilePos.exe</Path>
        <ActivatableClass ActivatableClassId="PclUtilitiesUniversel.CompanionInfo" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="PclUtilitiesUniversel.DeviceManager" ThreadingModel="both" />
      </InProcessServer>
    </Extension>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>PCLServiceUniversel.dll</Path>
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.TransOut" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.PCLService" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.TransIn" ThreadingModel="both" />
      </InProcessServer>
    </Extension>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>CLRHost.dll</Path>
      </InProcessServer>
    </Extension>
  </Extensions>

为什么在构建标签时添加了“CLRHost.dll”? 我在清单数据中哪里错了?

感谢您的任何建议, 刘易斯

更新 似乎只添加了这些标签(只有一个dll)项目构建成功

  <Extensions>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>PCLServiceUniversel.dll</Path>
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.TransOut" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.PCLService" ThreadingModel="both" />
        <ActivatableClass ActivatableClassId="PCLServiceUniversel.TransIn" ThreadingModel="both" />
      </InProcessServer>
    </Extension>
  </Extensions>

【问题讨论】:

    标签: uwp


    【解决方案1】:

    为什么在构建标签时添加了“CLRHost.dll”?我在清单数据中哪里错了?

    可以参考官方文档:Side-loaded applications in detail。据说:还有一个额外的细节:在侧面加载的应用程序清单中声明 RuntimeClass 的可用性。

    您可以按照指令VS2015TemplateBrokeredComponents 配置您的清单文件。

    第 9 步:更新 AppxManifest 以指定 Brokered 组件的定义在哪里使用此 XML:

      <Extensions>    
        <  Extension Category="windows.activatableClass.inProcessServer">    
          <InProcessServer>   
            <Path>clrhost.dll</Path>    
            <ActivatableClass ActivatableClassId="[Fully Qualified Name of Brokered Component]" ThreadingModel="MTA">    
              <ActivatableClassAttribute Name="DesktopApplicationPath" Type="string" Value="[Path to location of Brokered Components and ProxyStub]" />    
            </ActivatableClass>    
          </InProcessServer  >    
        </Extension>    
      </Extensions>
    

    【讨论】:

    • 谢谢你,如果你看到我更新的帖子,看来我只需要声明 dll 引用
    • @LuiginoDeTogni,您是否仅测试过声明MobilePos.exe?您是否尝试将 clrhost.dll 声明为包含 inProcessServer 的文档?
    • @LuiginoDeTogni,刚刚注意到您的路径MobilePos.exe,它看起来不像代理组件,您的MobilePos.exe 是什么?
    • MobilePos.exe 是 UWP 应用的主要可执行文件。我插入了这个 exe,因为我从我的客户那里收到了库和一个演示 uwp 应用程序;我没有详细信息如何将库(PCLServiceUniversel.dll)包含到我的项目中,所以我检查了在演示应用程序包中生成的 appx 清单(解压缩它),我看到演示应用程序的主要可执行文件以这种方式包含在内----- MobilePos.exe................
    • 我知道,我必须学习代理组件的工作原理以及如何在 uwp 项目中使用它们
    猜你喜欢
    • 1970-01-01
    • 2017-07-01
    • 2016-10-14
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2016-10-12
    • 2018-01-31
    相关资源
    最近更新 更多