0

是使用VS 2005和希望部署.NET我的C#应用​​程序到设备(扫描仪霍尼韦尔7600)太多的组件部署到目标设备(.NET 2.0 CF)

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

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

现在,如果我添加一个组件参考,例如log4net并且想要部署,许多其他程序集都部署到该设备。其实太多,设备用完的磁盘空间,请参阅以下VS consoloe输出:

Deploying 'C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll'
Deploying 'C:\Windows\assembly\GAC_32\System.Data.OracleClient\2.0.0.0__b77a5c561934e089\System.Data.OracleClient.dll'
Deploying 'C:\Windows\assembly\GAC_MSIL\System.Deployment\2.0.0.0__b03f5f7f11d50a3a\System.Deployment.dll'
Deploying 'C:\Windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll'
Deploying 'C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'
Deploying 'C:\Windows\assembly\GAC_MSIL\System.Configuration.Install\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.Install.dll'
Deployment and/or registration failed with error: 0x8973190e. Error writing file '%csidl_program_files%\scanandtrackdotnet\system.data.dll'. Error 0x80070070: Es steht nicht genug Speicherplatz auf dem Datenträger zur Verfügung.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========

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

回答

0

你引用log4net的桌面版本,其中的原因Studio来部署所有的依赖,这基本上意味着“所有的桌面.NET框架”,这显然是不会满足(或工作为的问题)在设备上。您需要引用为Compact Framework构建的log4net版本。

你不应该看到Deploying 'C:\Windows\assembly\GAC_MSIL\*的CF项目。

+0

由于ctacke - 现在是我清楚。我发现log4net的主页的小提示: **没有组件的二进制版本,针对Compact Framework的1.0/2.0或微软共享源代码CLI 1.0,但他们可以从源发布建成** – Nextremos 2014-10-11 09:41:48

1

Why are these assemblies deployed?

因为log4net需要它们。

How can I prevent it?

通过使用较小的日志库,或者干脆使用StreamWriter推出自己的。

+0

我不敢相信这log4net的使用System.Data.OracleClient.dll – Nextremos 2014-10-09 11:22:54