2015-06-16 66 views
1

我正在做一些互操作與非託管.dll s在一個標準的c#項目。我不能將這些.dll作爲簡單的引用添加,並且必須使用P/Invoke來實際使用它們。他們不包括清單,因此做任何聰明的反射的東西來動態加載這些東西(並且因此解決將它們包括爲明確的單獨文件的問題)是根本不可能的。作爲鏈接添加到項目文件夾內總是複製到輸出的根目錄

我並不關心安裝程序的版本,我可以告訴WiX(或者我選擇的任何安裝平臺)準確地將目標系統放在哪裏。

問題是在調試輸出方面,我需要這些.DLL與我自己的項目的可執行文件並排,但我不想讓他們混淆我的實際託管代碼。

所以我的情況是這樣的;

  • 我將幾個.dll文件作爲鏈接添加到項目的文件夾中。
  • 我嘗試更改.csproj以在調試輸出的根目錄輸出鏈接的文件。

它看起來是這樣的:

<None Include="..\..\externals\MyLibraries\ADll.dll"> 
    <Link>TidyFolder\ADll.dll</Link> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
</None> 

Now, normally you'd change the <Link> tag to where you want the output to go,但是這樣做:

<None Include="..\..\externals\MyLibraries\ADll.dll"> 
    <Link>ADll.dll</Link> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
</None> 

更改鏈接.dll s的我的項目資源管理器內駐留在該文件夾;它確實輸出,但雜亂是不受歡迎的,也是爲什麼我想把它們放到一個文件夾中的原因。

TL; DR:如何同時控制項目中鏈接項目的可見位置以及調試時的輸出位置。

回答

0

爲什麼不加入他們作爲嵌入的資源:

<ItemGroup> 
    <EmbeddedResource Include="..\..\externals\MyLibraries\ADll.dll"> 
     <Link>TidyFolder\ADll.dll</Link> 
     <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
    </EmbeddedResource> 
    </ItemGroup> 
+1

他們沒有得到裝入運行的裝配當我這樣做。我知道在可管理的(可怕的第三方)庫中可以訪問的唯一方法是對它們進行並行部署。 – Izzy

相關問題