【问题标题】:Publishing WPF application发布 WPF 应用程序
【发布时间】:2020-06-04 11:28:01
【问题描述】:

当我发布我的应用程序时,它在我的计算机上运行良好,但是当我尝试在另一台计算机上运行它时,它一直要求我下载特定的 .net 核心运行时。我的目标框架是 3.1,它一直要求 3.1.4 运行时或安装 3.1.0 运行时。我下载了一个较新版本的 .net core sdk,它与运行时(3.1.300)一起使用,但仍然没有变化。我尝试将我的 .netcore 框架也更改为 3.1.3,但它仍然只显示 3.1,可能是因为 3.1.3 是 3.1 的一部分。除了在其他用户的计算机上安装 3.1.0 之外,不知道如何解决此问题。

下面是我的csproj:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RootNamespace>VRI_configurator</RootNamespace>
    <UseWPF>true</UseWPF>
    <ApplicationIcon>KHVT.png</ApplicationIcon>
    <PackageIcon>KHVT.png</PackageIcon>
    <PackageIconUrl />
    <StartupObject>VRI_configurator.App</StartupObject>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="Resources\img\KHVT.png" />
    <None Include="/Resources/img/KHVT.png">
      <Pack>True</Pack>
      <PackagePath></PackagePath>
    </None>
  </ItemGroup>

  <ItemGroup>
    <Resource Include="Resources\img\KHVT.png" />
    <Resource Include="Resources\img\search_icon.png" />
    <Resource Include="Resources\img\username_icon.png" />
    <Resource Include="Resources\img\password_icon.png" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="MahApps.Metro" Version="2.0.0-alpha0748" />
    <PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.19" />
    <PackageReference Include="MySql.Data" Version="8.0.20" />
    <PackageReference Include="Prism.Core" Version="7.2.0.1422" />
    <PackageReference Include="System.Data.SqlClient" Version="4.8.1" />
  </ItemGroup>

  <ItemGroup>
    <Compile Update="Properties\Resources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
  </ItemGroup>

  <ItemGroup>
    <EmbeddedResource Update="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>

</Project>

任何帮助将不胜感激

【问题讨论】:

  • 你能编辑你的问题并添加你的 csproj 吗?您的 csproj 的定义方式可能存在问题。
  • 在发布配置文件中,您可以将部署模式切换为“自包含”。该设置会将所有必要的运行时文件与应用程序捆绑在一起。
  • 如果您编译为 32 位并安装了 64 位版本的框架,您可能会遇到此类问题,反之亦然。

标签: wpf .net-core publish


【解决方案1】:

如果您不希望最终用户必须安装 .NET Core 运行时才能运行您的应用,您可以将其发布为自包含应用。 p>

在 Visual Studio 的发布向导中单击配置文件下的“编辑”或“新建”,然后将部署模式更改或设置为 Self-contained,将目标运行时更改或设置为 win-x86win-x64

这将生成一个应用程序,其中包含 .NET Core 运行时和库,以及您的应用程序及其依赖项。然后,应用程序的用户可以在未安装 .NET Core 运行时的机器上运行它。

更多信息请参考文档:

.NET Core application publishing overview

Deploy .NET Core apps with Visual Studio

【讨论】:

  • 我已经尝试过了,但它给我留下了一个巨大的文件,遗憾的是这不是我的选择。
【解决方案2】:

经过一番搜索,我找到了问题的解决方案,我将下面的 xml 添加到 PropertyGroup 下的我的 csproj 文件中。现在它希望在用户计算机上安装 3.1.4 或更低版本的运行时框架,并且不再搜索 3.1.0。

<RuntimeFrameworkVersion>3.1.4</RuntimeFrameworkVersion>

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2014-05-31
    • 2022-12-15
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多