WPF Clickonce与Microsoft.Net.Sdk一起发布

问题描述 投票:5回答:1

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

但是,发布上述应用有点困难。 IDE绝对不提供该选项。但是令我有些困惑的是,当您直接调用msbuild时,发布目标似乎不可用。

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

    <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为控制台,Web之外的其他其他C#构建任务启用“ CoreBuild”的方式来获取/公开发布目标。和普通库。

进一步的想法:

因此,事实证明,在进一步检查中,实际上存在一个发布目标。但是,它将文件夹/ xcopy部署到名为Publish的子文件夹中,而不是创建app.publish文件夹并执行ClickOnce事情。

如何解决这个问题?

c# .net msbuild clickonce csproj
1个回答
1
投票

您可以使用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创建新的应用程序清单:

  • 在“名称”页面上,为其指定名称,版本,然后选择处理器体系结构(x86)。
  • 在“文件”页面上,输入将文件发布到的目录,然后单击填充。它应该将所有程序文件加载到下面的DataGridView中。
  • 在“所需的权限”页面上,我无法使用FullTrust以外的任何功能。没有FullTrust,运行应用程序时,什么都不会发生。
  • 将清单文件另存为MyApplication.exe.manifest到应用程序文件夹。 (您可以在保存清单时对清单进行签名。)

现在创建一个新的部署清单:

  • 在“名称”页面上,输入相同的名称和版本,然后选择正确的处理器体系结构。
  • 在“描述”页面上,输入Publisher和Product。
  • 在“部署选项”页面上,我选择“仅联机”。我没有包括“开始位置”。
  • 在“应用程序参考”页面上,选择“选择清单”并浏览到先前创建的应用程序清单文件。
  • 将部署清单清单另存为\\server\share\MyApplication\MyApplication.application; (您可以在保存时签名。)
  • 注意:这里的一个小问题似乎是,当您选择应用程序清单文件时,它会推断出错误的相对路径。第一次保存部署清单后,再次选择应用清单文件,它将推断出正确的相对路径。然后再次点击保存,您就可以了。

[很多事情可能出错,并且程序可能有很多不同的方式,但这是对我有用的步骤。

[ 。)
© www.soinside.com 2019 - 2024. All rights reserved.