2017-03-15 47 views
0

我已經編寫了一個應用程序,可以在我的目標Linux BeagleBone Black上運行Debian 8衍生操作系統。mkbundle和MEF

它會運行,如果我安裝整個單聲道運行時。這對於我將要運行的最終目標來說太大了。

我想使用mkbundle創建一個嵌入了一切的靜態包。

我遇到的問題是我在這個應用程序中使用MEF和依賴注入,當我運行mkbundle創建的最終包時,我得到如下所示的錯誤。

我懷疑這是因爲MEF和/或我的應用程序是通過加載DLL程序集來加載大部分導出的,並且它們都嵌入到了bundle中。

任何人都可以對此有所瞭解嗎?

以下是錯誤:

[ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: 'path' cannot be an empty string (""). 
Parameter name: path 
    at Microsoft.Internal.Requires.NotNullOrEmpty (System.String value, System.String parameterName) [0x00022] in <0007e672dd7f4959adc6f8103d9c843f>:0 
at System.ComponentModel.Composition.Hosting.DirectoryCatalog..ctor (System.String path, System.String searchPattern) [0x00011] in <0007e672dd7f4959adc6f8103d9c843f>:0 
at NonWindowsCommon.MefDI.<DirectoryCatalogContainer>m__1 (System.String path) [0x00022] in <15e2f18d34444e41a666c99ead602eed>:0 
at System.Linq.Enumerable+WhereSelectEnumerableIterator`2[TSource,TResult].MoveNext() [0x00064] in <63992662b765477a898ef49cdcc99ee2>:0 
at System.Diagnostics.Contracts.Contract.ForAll[T] (System.Collections.Generic.IEnumerable`1[T] collection, System.Predicate`1[T] predicate) [0x00048] in <8f2c484307284b51944a1a13a14c0266>:0 
at Microsoft.Internal.Requires.NotNullElements[T] (System.Collections.Generic.IEnumerable`1[T] values, System.String parameterName) [0x00013] in <0007e672dd7f4959adc6f8103d9c843f>:0 
at Microsoft.Internal.Requires.NullOrNotNullElements[T] (System.Collections.Generic.IEnumerable`1[T] values, System.String parameterName) [0x00000] in <0007e672dd7f4959adc6f8103d9c843f>:0 
at System.ComponentModel.Composition.Hosting.AggregateCatalog..ctor (System.Collections.Generic.IEnumerable`1[T] catalogs) [0x00006] in <0007e672dd7f4959adc6f8103d9c843f>:0 
at NonWindowsCommon.MefDI.DirectoryCatalogContainer (System.String basepath) [0x0002c] in <15e2f18d34444e41a666c99ead602eed>:0 
at Ignition.CommandLine.Program.Configure() [0x0006b] in <c9925f8b4dd141c2a6ea39dd7842d0d4>:0 
at Ignition.CommandLine.Program..ctor() [0x00012] in <c9925f8b4dd141c2a6ea39dd7842d0d4>:0 
at Ignition.CommandLine.Program.Main (System.String[] args) [0x00001] in <c9925f8b4dd141c2a6ea39dd7842d0d4>:0 

回答

0

原來,我們的其他開發者的一個已經寫好的代碼用的是exe文件路徑創建我們的組合容器。這個EXE路徑是「」,用於從一個mkbundle創建的EXE內部運行的主EXE。

這導致dev寫入的代碼使用空路徑。

我能夠通過簡單地跟蹤真正的EXE路徑並將其傳遞給用於創建容器的方法來解決此問題。