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