0

正在使用 VS 2005 并希望将我的 .NET C# 应用程序部署到设备(扫描仪 Honeywell 7600)

在设备上,.NET 2 CF (SP1) 与 Windows CE 5.0 一起运行。

如果我在 VS(智能设备 -> Windows CE 5.0 -> 设备应用程序)中创建一个默认项目并部署应用程序,一切正常。

现在,如果我添加一个程序集引用,例如log4net并想要部署,则会将许多额外的程序集部署到设备上。实际上太多了,设备磁盘空间不足,请参阅以下 VS consoloe 输出:

部署 'C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll'
部署 'C:\Windows\assembly\GAC_32\System.Data.OracleClient\2.0.0.0__b77a5c561934e089\System.Data.OracleClient。 dll'
部署 'C:\Windows\assembly\GAC_MSIL\System.Deployment\2.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll'
部署 'C:\Windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System. Web.dll'
部署 'C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'
部署 'C:\Windows\assembly\GAC_MSIL\System.Configuration.Install\2.0.0.0 __b03f5f7f11d50a3a\System.Configuration.Install.dll'
部署和/或注册失败并出现错误:0x8973190e。写入文件 '%csidl_program_files%\scanandtrackdotnet\system.data.dll' 时出错。错误 0x80070070:Es steht nicht genug Speicherplatz auf dem Datenträger zur Verfügung。
========== 构建:1 成功或最新,0 失败,0 跳过 ==========
========== 部署:0 成功, 1 失败, 0 跳过 ==========

问题:为什么将 System.Drawing.dll 和 System.Data.OracleClient.dll 等部署到设备上,它们是 .NET Framework 的一部分?.NET 2 CF 已经安装在设备上,那么为什么要再次部署这些程序集呢?

4

2 回答 2

1

为什么要部署这些程序集?

因为log4net需要他们。

我该如何预防?

通过使用较小的日志库,或者简单地使用 aStreamWriter来滚动您自己的。

于 2014-10-09T10:30:11.227 回答
0

您正在引用 log4net 的桌面版本,这导致 Studio 部署其所有依赖项,这基本上意味着“所有桌面 .NET 框架”显然不适合(或为此工作)设备。您需要参考为 Compact Framework 构建的 log4net 版本。

您永远不应该看到Deploying 'C:\Windows\assembly\GAC_MSIL\*CF 项目。

于 2014-10-10T14:21:33.577 回答