如何将Windows窗体应用程序转换为Windows应用商店?

时间:2015-07-20 08:07:27

标签: c# wpf xaml

我想将Windows窗体应用程序中的代码重用到我的Window商店应用程序 如果我替换并编译它,它会产生编译时错误,我无法找到解决方法。

    private void Text_Click(object sender, RoutedEventArgs e)
    {
        var processinfo = new ProcessStartInfo();
        String arg ="\"C:\\Users\\chnpn\\Documents\\NetBeansProjects\\PartyDemo\\dist\\PartyDemo.jar\"";

        String path ="C:\\Users\\chnpn\\Documents\\NetBeansProjects\\PartyDemo\\newtest.wav";
        //processinfo.FileName = "C:\\FFMPEG\\bin\\ffmpeg.exe";
        //processinfo.Arguments = "-i 360.mp4 -vn -y 360_1.wma";
        processinfo.FileName = "C:\\ProgramData\\Oracle\\Java\\javapath\\java.exe";

        processinfo.Arguments = "-jar " + arg + " \"" + path + "\"";
        //processinfo.Arguments = "-jar " + arg;
        processinfo.RedirectStandardOutput = true;
        processinfo.RedirectStandardError = true;
        processinfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

        processinfo.UseShellExecute = false;
        processinfo.LoadUserProfile = true;
        processinfo.CreateNoWindow = true;
        //processinfo.EnvironmentVariables.Add("HOME", @"C:\Users\napatsawan\.ffmpeg");

        Process process = Process.Start(processinfo);
        process.OutputDataReceived += new DataReceivedEventHandler(setOutput);
        process.BeginOutputReadLine();
        process.Start();
        process.WaitForExit();
        // We may not have received all the events yet!
        Thread.Sleep(5000);
       // Console.ReadLine();
    }

它显示以下

的错误
  • ProcessStartInfo
  • ProcessWindowStyle
  • Process
  • DataReceivedEventHandler(setOutput)

4 个答案:

答案 0 :(得分:0)

WPF .csproj文件包含一个附加属性:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

只需将其放在第一个<PropertyGroup>...</PropertyGroup>部分,无论在哪里都无关紧要。

{60dc8134-eba5-43b8-bcc9-bb4bc16c2548}的含义是这是一个WPF项目,而{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}表示一个C#项目。您可以从SO Question

了解有关项目类型指南的更多信息

答案 1 :(得分:0)

Windows应用商店应用与桌面应用不同!桌面应用程序具有的命名空间,类和方法。

如果您尝试在Windows应用商店应用中运行此代码,那么我可以告诉您,应用程序是沙箱,他们无法使用不属于他们的资源。

您无法在Windows应用商店应用上运行命令:

How can I run a command in windows store app?

但为什么需要Windows应用商店应用? Windows 8/10还使用桌面应用程序 - WPF,WF等。

答案 2 :(得分:0)

  1. 并非所有.NET库都可用于Windows应用商店。

  2. Windows商店不在表单上运行,它在布局上运行。

  3. 在Winforms应用程序中同步发生的许多操作必须在Windows应用商店应用程序中异步处理。

  4. 如前所述,Windows应用商店应用程序运行在&#34; sandbox&#34;意味着他们完全忘记了正在运行的其他一切。他们是&#34; Apps&#34;不是&#34;应用程序&#34;你的应用程序应该自己完成它需要做的所有事情。

答案 3 :(得分:0)

桌面到UWP Bridge似乎是为处理这种情况而设计的

https://developer.microsoft.com/en-us/windows/bridges/desktop