2015-06-16 16 views
1

Я выполняю взаимодействие с неуправляемым .dll s в стандартном проекте C#. Я не могу добавить эти .dll s как простые ссылки и должен использовать P/Invoke для их фактического использования. Они не включают в себя манифесты, поэтому любые умные вещи отражения для динамического их загрузки (и, таким образом, решить проблему включения их в виде явных отдельных файлов) просто не может быть и речи.Добавить в качестве ссылки в папке проекта, чтобы всегда копировать в корневой каталог

Я не занимаюсь выпуском установщика, я могу сказать WiX (или любую платформу установщика, которую я выбираю), какие файлы точно помещают в целевую систему.

Проблема в терминах вывода отладки, мне нужны эти .LLL бок о бок с исполняемым файлом моего собственного проекта, но я не хочу, чтобы они загромождали мой фактический управляемый код.

Итак, моя ситуация в этом;

  • Я добавляю несколько 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