使用MSIX发布WPF核心...多个问题

ryoqjall  于 2023-05-19  发布在  其他
关注(0)|答案(1)|浏览(126)

编辑#1开始

要复制此内容,请执行以下操作:
1.创建一个新的“vanilla”WPF应用程序,用于处理.Net Core 3.1
1.将Windows Application Packaging Project添加到解决方案中(按照Set up your desktop application for MSIX packaging in Visual Studio中提到的步骤操作)
1.尝试“部署”到UNC路径...

编辑#1结束

我正在将一个WPF .NET Framework应用程序转换为.NET Core 3.1。这个应用程序是一个“内部”工具,我们一直使用ClickOnce将创建设置放置在共享UNC路径上进行部署。如此简单。。。
我现在已经在.Net Core中重新编写了它,需要部署它。发现“ClickOnce”不再可用,我明白我必须走“MSIX”路线。文档看起来应该很简单,但我想我错过了一些东西。
1 -我不得不将我的开发人员设置从“边栏”更改为“开发人员模式”2 -它在我的机器上构建得很好,但在Azure DevOps上失败3 -我如何实际部署它?
让我们依次来看看每一个。

1 -侧栏=>开发者模式问题

我将一个新的Windows应用程序打包项目添加到我的解决方案中,为目标和最低版本选择Windows版本1909,并将我的WPF应用程序设置为入口点。我试着运行这个,它迫使我从“边栏”变到“开发者模式”。
这是否只影响到我作为开发人员....如果是这样,那很好。我怀疑最终用户会想这样做。

2 - Azure DevOps构建管道失败

在本地,它编译得很好,即使在发布模式下,我将所有警告设置为错误,并运行FxCop。把它推到Azure,它说:
[错误]C:\Program Files\dotnet\sdk\3.1.201\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(234,5):错误NETSDK 1047:资产文件“d:\a\1\s\MyApp\MyApp\obj\project.assets.json”没有“.NETCoreApp,Version=v3.1/win-x86”的目标。
确保恢复已运行,并且您已将“netcoreapp3.1”包含在项目的TargetFrameworks中。
您可能还需要在项目的RuntimeIdentifiers中包含'win-x86'。
好的

  • 我的YAML文件在成功构建之前有一个“恢复NuGet包”步骤。
  • 我在SKD项目文件中查找应用程序,看到<TargetFramework>netcoreapp3.1</TargetFramework>
  • 关于“RuntimeIdentifiers”,我发现了链接Additions to csproj format for .NET Core,因此在<TargetFramework>netcoreapp3.1</TargetFramework>下立即添加了<RuntimeIdentifiers>win-x64;win-x86</RuntimeIdentifiers>(我应该更具体地使用win10-x64;win10-x86吗?))

无论哪种方式,这都失败了,并带来了一条稍微不同的消息:
正在构建的项目“MSIL”的处理器体系结构与引用“path to my dll”,“x86”的处理器体系结构不匹配。这种不匹配可能导致运行时失败。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便使项目和参考之间的处理器体系结构保持一致,或者采用与项目的目标处理器体系结构匹配的处理器体系结构的参考。

3 -我实际上如何部署它?

MSIX:The Modern Way to Deploy Desktop Apps on Windows的相关文章:
要生成实际的MSIX包,在Project下有一个向导|产品展示|在Visual Studio中创建应用程序包。
我的机器上没有……我甚至安装了Visual Studio工作负载“通用Windows平台开发”。我可以在Build菜单下看到一个“Deploy”...但是就是这个吗....我应该把UNC路径放在哪里?
我想我错过了一些相当重要的东西....
我的CSPROJ的相关部分是

<PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifiers>win-x64;win-x86</RuntimeIdentifiers>
    <UseWPF>true</UseWPF>
  </PropertyGroup>

包项目为:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '15.0'">
    <VisualStudioVersion>15.0</VisualStudioVersion>
  </PropertyGroup>
  <ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug|x86">
      <Configuration>Debug</Configuration>
      <Platform>x86</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x86">
      <Configuration>Release</Configuration>
      <Platform>x86</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|x64">
      <Configuration>Debug</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|x64">
      <Configuration>Release</Configuration>
      <Platform>x64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|ARM">
      <Configuration>Debug</Configuration>
      <Platform>ARM</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|ARM">
      <Configuration>Release</Configuration>
      <Platform>ARM</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|ARM64">
      <Configuration>Debug</Configuration>
      <Platform>ARM64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|ARM64">
      <Configuration>Release</Configuration>
      <Platform>ARM64</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Debug|AnyCPU">
      <Configuration>Debug</Configuration>
      <Platform>AnyCPU</Platform>
    </ProjectConfiguration>
    <ProjectConfiguration Include="Release|AnyCPU">
      <Configuration>Release</Configuration>
      <Platform>AnyCPU</Platform>
    </ProjectConfiguration>
  </ItemGroup>
  <PropertyGroup>
    <WapProjPath Condition="'$(WapProjPath)'==''">$(MSBuildExtensionsPath)\Microsoft\DesktopBridge\</WapProjPath>
  </PropertyGroup>
  <Import Project="$(WapProjPath)\Microsoft.DesktopBridge.props" />
  <PropertyGroup>
    <ProjectGuid>08b169a2-6461-440b-afa1-ca35c7d98aa7</ProjectGuid>
    <TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
    <TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
    <DefaultLanguage>en-US</DefaultLanguage>
    <AppxPackageSigningEnabled>True</AppxPackageSigningEnabled>
    <EntryPointProjectUniqueName>..\MyApp\MyApp.csproj</EntryPointProjectUniqueName>
    <PackageCertificateThumbprint>01C08F1E21D5624A484DB362BE4F056504B825CC</PackageCertificateThumbprint>
  </PropertyGroup>
  <ItemGroup>
    <AppxManifest Include="Package.appxmanifest">
      <SubType>Designer</SubType>
    </AppxManifest>
  </ItemGroup>
  <ItemGroup>
    <Content Include="Images\SplashScreen.scale-200.png" />
    <Content Include="Images\LockScreenLogo.scale-200.png" />
    <Content Include="Images\Square150x150Logo.scale-200.png" />
    <Content Include="Images\Square44x44Logo.scale-200.png" />
    <Content Include="Images\Square44x44Logo.targetsize-24_altform-unplated.png" />
    <Content Include="Images\StoreLogo.png" />
    <Content Include="Images\Wide310x150Logo.scale-200.png" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\MyApp\MyApp.csproj">
      <SkipGetTargetFrameworkProperties>True</SkipGetTargetFrameworkProperties>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(WapProjPath)\Microsoft.DesktopBridge.targets" />
</Project>

(can/我是否应该删除对“DEBUG”和“ARM”的引用,因为我认为它们不相关??)
货单上写着

<?xml version="1.0" encoding="utf-8"?>

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
  IgnorableNamespaces="uap rescap">

  <Identity
    Name="46aebba6-d403-4412-89c0-05279b36e54e"
    Publisher="CN=MyCompany"
    Version="2020.5.0.0" />

  <Properties>
    <DisplayName>MyApp</DisplayName>
    <PublisherDisplayName>MyCompany</PublisherDisplayName>
    <Logo>Images\StoreLogo.png</Logo>
  </Properties>

  <Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.0" MaxVersionTested="10.0.14393.0" />
  </Dependencies>

  <Resources>
    <Resource Language="x-generate"/>
  </Resources>

  <Applications>
    <Application Id="App"
      Executable="$targetnametoken$.exe"
      EntryPoint="$targetentrypoint$">
      <uap:VisualElements
        DisplayName="MyApp.Package"
        Description="MyApp.Package"
        BackgroundColor="transparent"
        Square150x150Logo="Images\Square150x150Logo.png"
        Square44x44Logo="Images\Square44x44Logo.png">
        <uap:DefaultTile Wide310x150Logo="Images\Wide310x150Logo.png" />
        <uap:SplashScreen Image="Images\SplashScreen.png" />
      </uap:VisualElements>
    </Application>
  </Applications>

  <Capabilities>
    <Capability Name="internetClient" />
    <rescap:Capability Name="runFullTrust" />
  </Capabilities>
</Package>

谢谢!

q1qsirdb

q1qsirdb1#

在. waproj项目文件中请添加,

<PropertyGroup>
    <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
        None
    </ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>

相关问题