2010-04-28 21 views
5

曾經是"Do not write in-process shell extensions in managed code."In-Proc SxS在託管代碼中打開以用於外殼擴展?

但隨着.NET框架4和In-Process Side-by-Side的主要原因不寫在託管代碼的外殼擴展的建議應該得到解決。

就這樣說,我有三個問題。

  1. 現在可以在託管代碼中編寫shell擴展了嗎?
  2. 如果在託管代碼中編寫shell擴展可能存在哪些問題?
  3. 在非託管代碼中編寫外殼擴展的原因是什麼?

回答

2

現在可以在.NET 4託管代碼中編寫外殼擴展了。您仍應避免在.NET 3.5或更早版本中編寫外殼擴展,因爲這些早期版本不支持並行處理in-proc。

+0

感謝您的回答,我想我會嘗試寫一個並做一些測試。 – 2010-04-29 08:35:41

3
  1. 是的,它可以。
  2. 一個巨大的問題和時間浪費是你必須在託管代碼中聲明大量的shell接口,函數,結構等。您必須非常小心,因爲即使是單個參數的單個不正確的聲明都可能導致爆炸,訪問衝突,內存泄漏以及不需要數小時追蹤的內容。
  3. 唯一的原因是,如果你更喜歡或被迫使用非託管語言。

退房EZNamespaceExtensions.Net其消除#2的上方以及開發一般命名空間擴展所需要的時間(無論是在託管或非託管)。

+0

謝謝,我已經在C++中編寫了shell擴展,而shell api並不那麼簡單,所以我猜如果你使用c#的話它也是一樣的。我發現這個,託管迷你外殼擴展框架 - http://mmsf.codeplex.com/,但我還沒有看着它呢。 – 2010-04-30 10:46:35