gpt4 book ai didi

c# - WPF Clickonce 使用 Microsoft.Net.Sdk 发布

转载 作者:太空狗 更新时间:2023-10-29 23:43:31 24 4
gpt4 key购买 nike

我可以使用 Sdk="Microsoft.Net.Sdk"成功构建具有新 csproj 格式的 WPF 应用程序。

但是,发布上述应用程序有点挑战。该选项在 IDE 中绝对不可用。但是我觉得有点疑惑的是直接调用msbuild时Publish目标好像不可用。

这些是我设置的一些顶级属性:

    <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
<LanguageTargets>$(MSBuildExtensionsPath)\$(VisualStudioVersion)\Bin\Microsoft.CSharp.targets</LanguageTargets>
<OutputType>WinExe</OutputType>
<PlatformTarget>x86</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
<!--<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>-->
</PropertyGroup></Project>

我还设置了与 ClickOnce 相关的典型对象,例如 PublishUrl 等。我可以做些什么来获取/公开发布目标,就像上面的 LanguageTarget 为控制台外的其他遗留 C# 构建任务启用“CoreBuild”一样, Web 和普通库。

进一步思考:

因此,经过进一步检查,发现实际上有一个 Publish 目标。但它对名为 Publish 的子文件夹执行简单的文件夹/xcopy 部署,而不是创建 app.publish 文件夹并执行 ClickOnce 操作。

如何解决这个问题?

最佳答案

您可以使用 Mage.exe(命令行)或 MageUI.exe (gui) 工具手动发布 ClickOnce。这不是很方便,但如果一切正常,它似乎确实有效。我将概述使用 MageUI.exe 对我有用的方法。

为您正在使用的 .NET 版本选择正确的实用程序版本:

C:\Program Files (x86)\Microsoft SDKs\Windows\

首先将您的应用程序文件发布到一个文件夹中。通常这会是这样的:

\\server\share\MyApplication\Application Files\MyApplication_1_0_0_25\

注意:我对 Application Files 中的空间有疑问,它会被转换为 %20,但我认为 UNC 路径不支持该值。我必须删除空格并将文件夹重命名为 ApplicationFiles。 (虽然这可能会破坏以前发布的版本。)

然后使用MageUI.exe 创建一个新的应用程序 list :

  • 在“名称”页面上,为其命名、版本并选择处理器架构 (x86)。
  • 在"file"页面上,输入您将文件发布到的目录,然后点击“填充”。它应该将所有程序文件加载到下面的 DataGridView 中。
  • 在“所需权限”页面上,我无法使用低于 FullTrust 的任何内容。如果没有 FullTrust,当应用程序运行时,什么也不会发生。
  • 将 list 文件作为 MyApplication.exe.manifest 保存到应用程序文件夹。 (您可以在保存 list 时对其进行签名。)

现在创建一个新的部署 list :

  • 在“名称”页面上,输入相同的名称和版本并选择正确的处理器架构。
  • 在描述页面上,输入发布商和产品。
  • 在“部署选项”页面上,我选择了“仅限在线”。我没有包含开始位置。
  • 在“应用程序引用”页面上,选择“选择 list ”并浏览到您之前创建的应用程序 list 文件。
  • 将部署 list 保存为 \\server\share\MyApplication\MyApplication.application; (保存时可以签名。)
  • 注意:这里的一个小故障似乎是当您选择应用程序 list 文件时它会推断出错误的相对路径。第一次保存部署 list 后,再次选择应用程序 list 文件,它现在将推断出正确的相对路径。然后再次点击保存,你应该没问题。

很多事情都可能出错,程序也有很多不同之处,但这些是对我有用的步骤。

(在这些步骤中我必须做的另一件事是清除我的 ClickOnce 应用程序缓存,方法是删除 c:\users\username\AppData\Local\Apps\2.0\ 的内容。但是可能只是因为我犯了所有错误。只有当你被卡住时我才会这样做。)

关于c# - WPF Clickonce 使用 Microsoft.Net.Sdk 发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43809965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com