Автоматично вграждане на референтни сборки

Намерих някои наистина страхотни статии за това как да вградите асембли в един главен DLL. Това е необходимо, ако искате да съхранявате вашите DLL файлове в CRM базата данни. AppDomain.CurrentDomain.AssemblyResolve в dynamics crm

Алтернативата е да използвам ILMerge, което не ме интересува.

В моя сценарий DLL файловете, които искам да вградя, са от едно и също решение. Номерът за вграждане на сглобките е да създадете папка, да добавите съществуващ елемент и да изберете DLL файловете, които искате да използвате. След това отивате в свойствата на DLL файловете и ги маркирате като вграден ресурс.

Проблемът е, че посочените DLL файлове няма да бъдат актуализирани, докато не създам решението. И така, в момента изграждам проекта, копирам /bin DLL файловете в папката на сборките на проекта и след това възстановявам проекта за втори път.

За да влоша нещата, имам различни конфигурации на решение: Debug, Development, QC, UAT и Production. Което променя директорията /bin, от която вземам DLL файловете.

И така, има ли начин за автоматично опресняване на папката на проекта всеки път, когато проектът бъде изграден - и мога ли да променя откъде идват DLL файловете в зависимост от текущата конфигурация на решението?


person Travis Parks    schedule 25.04.2014    source източник
comment
Ако щракнете с десния бутон върху който и да е проект и отидете на свойства, можете да създадете персонализирани стъпки за изграждане (като копиране на файлове) или да промените изходната директория за всяка конфигурация на изграждане. Можете също да посочите допълнителни папки, през които да търсите зависими библиотеки.   -  person Egor    schedule 25.04.2014
comment
@Egor – успях да използвам стъпката за предварително компилиране, за да xcopy DLL файловете от конкретните проекти $(OutDir)s в моята папка за вградени сборки. Достъпът до папката $(OutDir) ме спестява от създаването на отделни скриптове за внедряване. Благодаря!   -  person Travis Parks    schedule 25.04.2014


Отговори (1)


В продължение на няколко месеца изграждах решението, копирайки DLL файлове в папка EmbeddedAssemblies и след това възстановявах проекта. Беше наистина болезнено, защото трябваше да напиша .bat файл, който да извика MSBuild на моя целия .sln, след това да направя XCOPY и след това извикайте MSBuild на .csproj.

Още по-лошо, тъй като нямам контрол върху начина, по който TFS игнорира файловете, контролът на източника постоянно виждаше тези файлове като променящи се и трябваше изрично да ги изключа от проверките. Моите съотборници обикновено не бяха толкова внимателни.

Ultimate, погледнах отново ILMerge. Вътрешно прави почти същото, което правех и аз. Преминах на ILMerge и оттогава съм по-щастлив.

person Travis Parks    schedule 11.09.2014