我正在用 C# WPF 制作一个文本编辑器。将项目发布到文件夹后,我可以双击 .exe,它运行良好,并且我可以使用我的打开 (CTRL+O) 功能完美加载文件。
我想使用打开方式 > 选择另一个应用程序 > 更多应用程序 > 在这台 PC 上查找另一个应用程序 (我还不担心文件关联 - 在开发过程中这很好)
这就是问题所在 - 无论我对我的代码做什么,当我使用这种方法打开它时,我都无法让我的应用程序做任何有用的事情。发生的情况是它会弹出一个随机大小的白色窗口,看起来很忙 - 2 秒后它会自行关闭。窗口的名称是“%PathOfTheFileIOpened% - KuroNote”,似乎是自动的。
应用程序.xaml
<Application x:Class="KuroNote.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:KuroNote"
Startup="Application_Startup"
ShutdownMode="OnMainWindowClose">
<Application.Resources>
</Application.Resources>
</Application>
应用程序.xaml.cs
namespace KuroNote
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
MessageBox.Show("test");
foreach (string s in e.Args)
{
MessageBox.Show(s);
}
}
}
}
正如你所看到的,我删除了所有有用的代码来尝试让它做一些事情——我什至没有打开主窗口,我只是想让它输出它的命令行参数。当我使用“在这台 PC 上查找另一个应用程序”方法时,我什至没有看到“测试”消息框,就像你在上面看到的那样。
从这个项目属性的截图中可以看到,启动对象也被设置为应用程序。
我认为这可能与权限相关,但可执行文件和要打开的文件永远不会在受保护的管理员区域中。
我之前在调试时做过测试,检索在项目属性>调试选项卡>“应用程序参数:”中设置的命令行参数,并且这些都很好地返回。使用“在这台 PC 上查找另一个应用程序”方法打开似乎有些不同,就像它所做的不仅仅是使用带有文件路径的命令行参数启动应用程序。
我是否缺少 App.xaml 中启用“打开方式”功能的某种标志?
它是一个纯粹的离线应用程序,不是网络应用程序,我发布后得到的文件只是“KuroNote.deps.json”、“KuroNote.dll”、“KuroNote.exe”、“KuroNote.pdb”和“KuroNote.runtimeconfig” .json”,没有听起来像“ClickOnce”使用的“.application”文件。如果我在 Visual Studio 中搜索“ClickOnce”,它说我可以安装它,但听起来不像已经安装了。除非我需要禁用一些隐藏的“使用 ClickOnce”设置?