Ang*_*elo 5 clickonce command-line console-application .net-core
我注意到可以使用 Visual Studio 通过 ClickOnce 发布 .net core 5 控制台应用程序。
TLDR; 控制台应用程序的全部意义在于能够使用用户输入的命令选项/参数在命令行上调用它。ClickOnce 允许我发布控制台应用程序这一事实让我相信这是可能的,但 ClickOnce 似乎通过模糊 exe 的实际路径来反对这个用例。我该如何解决这个问题?
细节
我可以使用 ClickOnce 来部署控制台应用程序并且它可以工作,但只能从 Windows 开始菜单中找到应用程序。应用程序不能(很容易?)从命令行调用,因为它的位置不在用户的路径环境变量中。您可能知道,clickonce 会在“开始”菜单中放置可执行文件的快捷方式...
C:\users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\<ConsoleApp>.appref-ms
其中<ConsoleApp>.appref-ms是指向安装程序的 UNC 文件路径的应用程序引用。如果我理解正确,clickonce会在用户的机器上安装应用程序,但会掩盖实际可执行文件的位置/文件路径。您基本上被迫使用应用程序引用来启动 ClickOnce 应用程序。
这对于 wpf 应用程序很好,因为它们是从“开始”菜单启动的。但是控制台应用程序呢?
我正在编写的控制台应用程序需要用户提供的选项/参数。如果它只是在开始菜单中,它将在没有任何选项/参数的情况下启动并运行。此外,它会在新的控制台窗口中启动。这使得控制台应用程序(以这种方式部署时)作为另一个可供用户在 powershell 中执行其他操作时执行的命令毫无用处。
问题
小智 1
我已经在 .Net Framework 应用程序上完成了此操作
请注意以下要点:
static void
Main(string[] args)
{
if (ApplicationDeployment.IsNetworkDeployed)
{
var inputArgs = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData;
if (inputArgs != null && inputArgs.Length > 0)
{
args = inputArgs[0].Split(new char[] { ',' });
}
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm(args)); // Here you pass the argument to the application
}
Run Code Online (Sandbox Code Playgroud)
在 Windows 命令提示符下,您可以调用该应用程序
myapp.appref-ms 参数 1、参数 2、参数 3
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |