3

ユーザーが Mono をインストールしなくても Linux で実行できるように、MkBundle を使用してこの C# プログラムを構築しようとしています。

しかし、ビルドされたプログラムを使用しようとすると、エラーが発生し続けます。

再現する手順:

  1. このプロジェクトを Git クローンします。

https://github.com/nddipiazza/Sharepoint-Exporter

  1. これから DLL を抽出します。

https://www.microsoft.com/en-us/download/confirmation.aspx?id=35585 -

  1. ソリューション エクスプローラーで、[参照] を右クリック -> [参照の追加] -> [.NET アセンブリの参照] -> [Microsoft sharepoint DLL の追加] を選択します。

    • Microsoft.SharePoint.Client.dll
    • Microsoft.SharePoint.Client.Runtime.dll
  2. アプリケーションをビルドします。

(または、ここからビルドされたアプリケーションを取得するだけですhttps://drive.google.com/a/lucidworks.com/file/d/1GPgkmike9KYTDBGLuNj0R_0Q_FDQdhKr/view?usp=sharing )

  1. 走る:

mkbundle --simple --static --deps -o ./SpFetcher bin/Release/SpPrefetchIndexBuilder.exe

バンドルが正常にビルドされているように見えることに注意してください。

ndipiazza@mate:~/lucidworks/Sharepoint-Exporter/SpCrawler (master)*$ mkbundle --simple --static --deps -o ./SpFetcher bin/Release/SpPrefetchIndexBuilder.exe
Using runtime: /usr/bin/mono
     Assembly: /home/ndipiazza/lucidworks/Sharepoint-Exporter/SpCrawler/bin/Release/SpPrefetchIndexBuilder.exe
       Config: /usr/bin/mono
     Assembly: /usr/lib/mono/4.5/mscorlib.dll
     Assembly: /usr/lib/mono/4.5/System.Net.Http.dll
     Assembly: /usr/lib/mono/4.5/System.dll
     Assembly: /usr/lib/mono/4.5/Mono.Security.dll
     Assembly: /usr/lib/mono/4.5/System.Configuration.dll
     Assembly: /usr/lib/mono/4.5/System.Xml.dll
     Assembly: /usr/lib/mono/4.5/System.Security.dll
     Assembly: /usr/lib/mono/4.5/System.Core.dll
     Assembly: /usr/lib/mono/4.5/Mono.Posix.dll
     Assembly: /usr/lib/mono/4.5/System.Web.Extensions.dll
     Assembly: /usr/lib/mono/4.5/System.Web.dll
     Assembly: /usr/lib/mono/4.5/System.Drawing.dll
     Assembly: /usr/lib/mono/4.5/System.Runtime.Serialization.Formatters.Soap.dll
     Assembly: /usr/lib/mono/4.5/System.Data.dll
     Assembly: /usr/lib/mono/4.5/System.Numerics.dll
     Assembly: /usr/lib/mono/4.5/System.Transactions.dll
     Assembly: /usr/lib/mono/4.5/Mono.Data.Tds.dll
     Assembly: /usr/lib/mono/4.5/System.EnterpriseServices.dll
     Assembly: /usr/lib/mono/4.5/System.Web.ApplicationServices.dll
     Assembly: /usr/lib/mono/4.5/System.ComponentModel.DataAnnotations.dll
     Assembly: /usr/lib/mono/4.5/Mono.Data.Sqlite.dll
     Assembly: /usr/lib/mono/4.5/System.Web.Services.dll
     Assembly: /usr/lib/mono/4.5/System.DirectoryServices.dll
     Assembly: /usr/lib/mono/4.5/Novell.Directory.Ldap.dll
     Assembly: /usr/lib/mono/4.5/System.Design.dll
     Assembly: /usr/lib/mono/4.5/System.Windows.Forms.dll
     Assembly: /usr/lib/mono/4.5/Accessibility.dll
     Assembly: /usr/lib/mono/4.5/Mono.WebBrowser.dll
     Assembly: /usr/lib/mono/4.5/System.Data.Linq.dll
     Assembly: /usr/lib/mono/4.5/System.Runtime.Serialization.dll
     Assembly: /usr/lib/mono/4.5/System.ServiceModel.Internals.dll
     Assembly: /usr/lib/mono/4.5/System.ServiceModel.dll
     Assembly: /usr/lib/mono/4.5/System.IdentityModel.dll
     Assembly: /usr/lib/mono/4.5/System.Messaging.dll
     Assembly: /usr/lib/mono/4.5/Mono.Messaging.dll
     Assembly: /usr/lib/mono/4.5/System.Configuration.Install.dll
     Assembly: /usr/lib/mono/4.5/System.IdentityModel.Selectors.dll
     Assembly: /usr/lib/mono/4.5/System.ServiceModel.Activation.dll
     Assembly: /home/ndipiazza/lucidworks/Sharepoint-Exporter/SpCrawler/Microsoft.SharePoint.Client.dll
     Assembly: /home/ndipiazza/lucidworks/Sharepoint-Exporter/SpCrawler/Microsoft.SharePoint.Client.Runtime.dll
     Assembly: /usr/lib/mono/4.5/System.Xml.Linq.dll
     Assembly: /usr/lib/mono/4.5/I18N.West.dll
     Assembly: /usr/lib/mono/4.5/I18N.dll
Generated ./SpFetcher
  1. ./SpFetcherプログラムを実行します

    • Mono を搭載したマシンでは、正常に動作します。

    • mono のないマシンでは、次のエラーが発生します。

    URI プレフィックスが認識されません。System.Net.WebRequest.Create (System.Uri requestUri、System.Boolean useUriBase) [0x000ae] で <50d80b08c1a5449282b22aedf03ce925>:0 System.Net.WebRequest.Create (System.String requestUriString) [0x00014] で <50d80b08c1a5449282b29aedf03ce> Microsoft.SharePoint.Client.SPWebRequestExecutor..ctor で 0 (Microsoft.SharePoint.Client.ClientRuntimeContext コンテキスト、System.String requestUrl) [0x0002e] : Microsoft.SharePoint.Client.DefaultWebRequestExecutorFactory.CreateWebRequestExecutor で 0 (Microsoft.SharePoint.Client. ClientRuntimeContext context, System.String requestUrl) [0x00021] in :0 at Microsoft.SharePoint.Client.ClientContext.GetFormDigestInfoPrivate () [0x0000d] in :0 at Microsoft.SharePoint.Client.ClientContext.EnsureFormDigest () [0x0001f] in :

そのエラーは予期されていません。

mkbundleプログラムが正しく動作しませんか?

mkbundle しようとしている c# プログラム: https://drive.google.com/a/lucidworks.com/file/d/1GPgkmike9KYTDBGLuNj0R_0Q_FDQdhKr/view?usp=sharing

mkbundled の結果: https://drive.google.com/file/d/13kHG-RxSqfMFlE53wCSe9iqfwOzheKUm/view?usp=sharing

更新: mkbundle issue tracker でチケットを作成しました。https://bugzilla.xamarin.com/show_bug.cgi?id=60753#bug_status_bottom

4

1 に答える 1

0

私が作成した github チケットについて、プロジェクト オーナーのmigueldeicazaの 1 人から応答がありました。

これは、バンドルされている実行可能ファイルに machine.config ファイルがないことが原因です。

おそらく、mkbundle が machine.config も同梱するようにする必要があります。

mkbundle --simple --deps -o foo a.exe --machine-config /etc/mono/4.5/machine.config 問題は、machine.config の自動配布がなければ、開発者がクロス コンパイラで見つけるのに苦労することです。適切なパス。

まず、私が作成したチケットの会話を見てください。そうすれば、何を変更すべきかがわかります。私の場合、これは機能します:

MONO_LOG_MASK=asm MONO_LOG_LEVEL=debug mkbundle --simple --static --deps -o ./SpFetcher --config /etc/mono/config --machine-config /etc/mono/4.5/machine.config bin/Release/SpPrefetchIndexBuilder.exe

最終的に動作します。これをubuntumate 16に対してビルドし、これをモノがインストールされていないubuntumate 17マシンに移動し、実行して合格しました!

于 2018-01-02T14:44:10.507 に答える