簡體   English   中英

使用DLL在另一個文件夾中運行mono .exe

[英]Run mono .exe with the DLL's in a different folder

我使用Mac的dmcs可執行文件和以下命令行程序編譯了test.cs文件(引用第三方庫):

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.exe文件的目錄中。 project.dll復制到同一目錄后,程序運行正常。

是否有一個額外的參數我可以傳遞給mono以在另一個程序目錄中指定DLL? 或者,是否有一個標志我可以傳遞給dmcs ,以便將DLL直接編譯成二進制文件?

您可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM