Не могу найти что дальше делать для внедрения dll в exe после
> PM> Install-Package Costura.Fody
Как работает Costura.Fody?
Обновлено:
После добавления
<Target
AfterTargets="AfterBuild;NonWinFodyTarget"
Name="CleanReferenceCopyLocalPaths" >
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>
</Project>
Файл Resources\7z.dll остался но:
Необработанное исключение типа "System.ArgumentException" в mscorlib.dll >Дополнительные сведения: Путь имеет недопустимую форму.
var currentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
SevenZipCompressor.SetLibraryPath(Path.Combine(currentDir, @"Resources\7z.dll"));
Необработанное исключение типа "System.TypeInitializationException" в SevenZipSharp
Дополнительные сведения: Инициализатор типа "SevenZip.SevenZipLibraryManager" выдал исключение.
InnerException
{"Путь имеет недопустимую форму."}
SevenZipCompressor.SetLibraryPath(@"Resources\7z.dll")
Обновлено2:
Ошибка исчезла после: ссылки-> SevenZipSharp -> Копировать локально-> False
SevenZipCompressor.SetLibraryPath(@"Resources\7z.dll")
Но по прежнему не работает:
var currentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
SevenZipCompressor.SetLibraryPath(Path.Combine(currentDir, @"Resources\7z.dll"));
Нужно как-то внедрить 7z.dll в exe
Дальше вам делать ничего не нужно, просто собирайте проект как собирали раньше. Зависимые .dll будут вшиты в .exe файл.
Стоит отметить, что Costura.Fody
по умолчанию не занимается очисткой папки от сторонних .dll. Чтобы изменить это поведение вы можете добавить следующие строчки в проектный файл
<Target
AfterTargets="AfterBuild;NonWinFodyTarget"
Name="CleanReferenceCopyLocalPaths" >
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>
или просто прописать соответствующую команду:
Install-CleanReferencesTarget
Если вас интересует как это работает то вы можете поразбирать исходники. Они находятся тут
Виртуальный выделенный сервер (VDS) становится отличным выбором
Троелсен в своей книге, советует переопределить метод ToString() у класса(переопределенная версия возвращает строку из полей всего класса через...
Допустим, имеется объект с переопределенным GetHashCode, который я хочу сделать ключемGetHashCode вычисляется, как совокупность GetHashCode всех полей