用.NetZ 和 WPF 导致 System.IO.IOException

本文关键字:System IO IOException 导致 WPF NetZ | 更新日期: 2023-09-27 18:32:58

我的目标是能够通过命令行或Visual Studio的完整内置将任何打包程序用于C#应用程序和库(更喜欢WPF)。

我遇到了.NetZ (http://madebits.com/netz/) 非常整洁且运行良好,直到我使用 WPF 应用程序对其进行了测试:

PackageExample.Program -> C:'Users'[username]'Documents'Visual Studio 
2012'Projects'PackageExample'PackageExample.Program'bin'Debug'PackageExample.Program.exe
COMMAND: packcompress'netz-bin-40'netz.exe -o PackageExample.Program'bin'Debug'Packed -pl 
anycpu -s -z PackageExample.Program'bin'Debug'PackageExample.Program.exe 
"PackageExample.Program'bin'Debug'*.dll" -d:@ -v
 __________________________________________ 
|                                          |
| .NETZ - .NET Executables Compressor      |
| Copyright (C) 2004-2013 Vasian Cepa      |
| [v0.4.8]  http://madebits.com            |
|__________________________________________|
PE subsystem    : GUI
.NET Runtime    : 4.0.30319.18052
Output directory: C:'Users'[username]'Documents'Visual Studio 
2012'Projects'PackageExample'PackageExample.Program'bin'Debug'Packed
     RID: zip.dll
Added           : C:'Users'[username]'Documents'Visual Studio 
2012'Projects'PackageExample'packcompress'netz-bin-40'zip.dll [65536 byte(s) ~ 64KB]
Processing      : 3 file(s)
 1|  C:'Users'[username]'Documents'Visual Studio 
2012'Projects'PackageExample'PackageExample.Program'bin'Debug'PackageExample.Program.exe
     [255488 byte(s) ~ 249KB] -> [130850 byte(s) ~ 127KB] - 49%
     RID: A6C24BF5-3690-4982-887E-11E1B159B249
 2|  C:'Users'[username]'Documents'Visual Studio 
2012'Projects'PackageExample'PackageExample.Program'bin'Debug'PackageExample.Lib1.dll
     [4096 byte(s) ~ 4KB] -> [1577 byte(s) ~ 1KB] - 62%
     RID: PackageExample.Lib1!2!1Version=1.0.0.0!2!1!4=neutral!2!1PublicKeyToken=null
 3|  C:'Users'[username]'Documents'Visual Studio 
2012'Projects'PackageExample'PackageExample.Program'bin'Debug'PackageExample.Lib2.dll
     [4608 byte(s) ~ 4KB] -> [1617 byte(s) ~ 1KB] - 65%
     RID: PackageExample.Lib2!2!1Version=1.0.0.0!2!1!4=neutral!2!1PublicKeyToken=null
Done [00:00:00.300]

打包的应用程序抛出这个:http://i.imagebanana.com/img/251ygj82/Unbenannt.PNG(找不到 ressource mainwindow.xaml。

问题似乎是 xaml .NetZ 令人困惑,但我发现有些人在互联网上工作,但我没有得到任何问题解决方案。

在这种情况下,你能帮助我吗?

附加信息:值得一提的是,我什至在 .NET 2.0 上尝试过这个。NetZ 基于 .NET 3.5 WPF 应用程序构建。

用.NetZ 和 WPF 导致 System.IO.IOException

我在使用 NetZ 将 WPF 4.0 exe 和 DLL 压缩为单个 exe 时也遇到了问题。我的应用程序.xml.cs将开始运行,但随后将抛出类型为NotImplementException的UnhandledException: Baml2006SchemaContext.ResolveBamlType ...

为了解决这个问题,我运行fuslogvw.exe以查看程序集绑定错误,并发现GalaSoft.MvvmLight.Wpf4.dll无法从Netz打包的程序集加载。然后我切换到NetZ.exe从源代码编译并重试。经过反复试验,我发现如果我重新编译并NetZ打包应用程序,它有时会开始工作。再次重新编译主应用,NetZ 将生成一个失败的应用。换句话说,有些东西是间歇性的。很抱歉不太好的消息 - 要么尝试另一种打包方案,要么在许多构建中反复尝试 NetZ,直到找到一个有效的方案。