8

Mac用の実行可能ファイルと次のコマンドラインプログラムtest.csを使用して、ファイル(サードパーティライブラリを参照)をコンパイルしました。dmcs

dmcs /out:program.exe test.cs /target:exe /reference:/Users/kevin/path/to/bin/Debug/project.dll 

これは問題なくコンパイルされました(/ reference引数を除いて問題が発生します)。これによりprogram.exe、現在のディレクトリに実行可能ファイルが作成されました。私がこのようにそれを実行しようとしたとき:

mono program.exe

次のエラーが発生しました:

Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'project, Version=3.4.1.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.

これを解決するために私が理解できる唯一の方法は、project.dllファイルを含むディレクトリにファイルをコピーすることでしたprogram.exeproject.dll同じディレクトリにコピーすると、プログラムは正しく実行されました。

mono別のプログラムディレクトリにあるDLLを指定するために渡すことができる追加の引数はありますか?dmcsまたは、 DLLを直接バイナリにコンパイルするために渡すことができるフラグはありますか?

4

1 に答える 1

3

app.config のプローブ要素を使用して、目的を達成できます

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin;bin2\subbin;bin3"/>
      </assemblyBinding>
   </runtime>
</configuration>

privatePath を任意のディレクトリに設定します。 http://msdn.microsoft.com/en-us/library/823z9h8w(v=vs.80).aspx

ただし、サブディレクトリを指定しない限り、これは強くお勧めしません。アセンブリを同じディレクトリに置きたくない場合は、Uwe Keim が提案したようにリンクするか、GAC を使用することを検討してください。

リンク: http://www.mono-project.com/Linker

GAC: http://www.mono-project.com/Assemblies_and_the_GAC

于 2012-12-25T09:46:13.980 に答える