asp.net развернуть сторонние dll в папку bin - PullRequest
0 голосов
/ 10 мая 2018

ОБЩАЯ ИНФОРМАЦИЯ

Я создал веб-сайт ASP.NET webforms (4.6), в котором есть некоторые сторонние компоненты.Чтобы это работало, я создал папку SharedResources, в которой содержатся необходимые библиотеки DLL.Я добавил ссылку, и эти библиотеки были скопированы в BIN при публикации - БОЛЬШОЙ.НО есть некоторые другие необходимые библиотеки DLL, на которые нельзя ссылаться, поскольку они не являются допустимыми сборками или компонентами COM.

МОЯ ПРОБЛЕМА

Как добавить в сборку библиотеки DLL, находящиеся в папке (SharedResources \ 3rdParty), поэтому, когда я нажимаю «Опубликовать», он сбрасывает все эти dll в папку bin на сайте.

WORKAROUND

(пытаясь избежать этого) Я установил dll Buildдействие «Содержимое - всегда копировать», и это дает мне папку DLL в ~ \ SharedResources \ 3rdParty \, а затем приложение жалуется на отсутствие DLL, поэтому я копирую их в корзину вручную - это не может быть правдой!

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Это не будет работать, когда вы публикуете сайт.Вам нужно будет создать свои собственные цели в файле проекта или отдельном файле целей и вызвать их следующим образом -

Добавить следующее -

<ItemGroup>
    <ThirdPartyDllDependencies Include="$(SolutionDir)..\..\Lib\ThirdPartyDll\*.dll" SkipUnchangedFiles="true" />
</ItemGroup>

    <Target Name="PublishThirdPartyDllDependencies">
    <Copy SourceFiles="@(ThirdPartyDllDependencies)" DestinationFolder="$(OutDir)\" />
    <Copy SourceFiles="@(ThirdPartyDllDependencies)" DestinationFolder="$(WebProjectOutputDir)\bin\" />    
</Target>


<!-- This target is responsible for adding the ThirdPartyDll and dependencies to the bin directory while Publishing the website. -->
<Target Name="CustomCollectFiles">
    <ItemGroup>
        <_CustomFiles Include="$(SolutionDir)..\..\Lib\ThirdPartyDll\ThirdPartyDll11\64Bit\*.dll" />
            <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
                <DestinationRelativePath>$(WebProjectOutputDir)\bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
                <DestinationRelativePath>$(OutDir)\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
            </FilesForPackagingFromProject>
    </ItemGroup>
</Target>

<PropertyGroup>
    <CopyAllFilesToSingleFolderForPackageDependsOn>
        CustomCollectFiles;
        $(CopyAllFilesToSingleFolderForPackageDependsOn);
    </CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
0 голосов
/ 10 мая 2018

Щелкните правой кнопкой мыши свой проект, перейдите в свойства и на вкладке событий сборки вставьте его в командную строку события перед сборкой: скопируйте $ (ProjectDir) SharedResources \ 3rdParty * .dll $ (ProjectDir) $ (OutDir)

...