2011-01-13 3 views
1

У меня возникла проблема переименования файла ICSharpCode.SharpZipLib.dll в anythig else. Я пытаюсь сократить имя файла. Я ссылаюсь на сборку в проекте, но когда программа достигает инструкций, в которых я использую библиотеку. Он порождает ошибку, которая не может найти сборку или файл «ICSharpCode.SharpZipLib». Когда я меняю имя файла на ICSharpCode.SharpZipLib.dll, приложение работает норамально. Итак, есть ли способ изменить имя файла. Кроме того, я могу изменить его, не нарушая лицензию (я собираюсь использовать его в коммерческом приложении). Благодарю.Переименование ICSharpCode.SharpZipLib.dll

+0

Вероятно, вы имеете ссылку в вашем приложении, которое до сих пор ссылается на имя, прежде чем переименован в сборе? –

+1

Просто любопытно, что именно происходит с длиной имени? –

+1

В вычислениях имена только становятся описательными, мы оставляем много ужасных ошибок; Здесь вы надеетесь, что не создаете машину времени, чтобы забрать нас туда. –

ответ

4

SInce вы переименовали DLL, среда выполнения .Net не знает, как найти ее автоматически.

Вы можете позвонить Assembly.Load, чтобы вручную загрузить переименованный файл.
Обратите внимание, что вам нужно будет сделать это до вызова любых методов, которые используют сборку, поскольку JITTER необходимо загрузить все типы, используемые (напрямую) методом до начала запуска метода.

+0

SLaks, это не сработало. –

+1

@John: Вы, вероятно, загрузили его слишком поздно. Загрузите его перед вызовом любых методов, которые его используют, чтобы JITter смог его найти. – SLaks

+0

Slaks, это то, что я сделал точно (я загрузил сборку на событие загрузки формы). Я потратил около 6 часов на поиск ответа, но то, что я должен был сделать, - это заглянуть в документацию. Проведя примерно полчаса чтения о том, как выполняется разрешение на сборку, я выяснил, как ее следует обрабатывать. Большое спасибо за ваше время. –

-2

DLL скомпилирован, поэтому переименование файла в любом случае не изменит его namespace. Вы можете назначить ему псевдоним с помощью директивы using.

using zip = ICSharpCode.SharpZipLib; 
+1

Он пытается сократить имя _file_. – SLaks

+0

Да, я хочу сократить имя файла. –

5

Вы можете попытаться разобрать библиотеку, а затем снова собрать новое имя.

E.g.

1) Откройте командную строку Visual Studio.

ildasm /all /out=ICSharpCode.SharpZipLib.il ICSharpCode.SharpZipLib.dll 
ilasm /dll /out=shortname.dll ICSharpCode.SharpZipLib.il 

2) Добавить shortname.dll в проект

+1

Мне также пришлось отредактировать промежуточный (.il) файл и найти/заменить старое имя на новое имя. Замены произошли, в частности, в записях «сборка» и «.module». Это, безусловно, самый простой способ переименовать сборку. Благодарю. – Jin

+0

Это замечательно, но это не работает, когда есть неуправляемый код. – nurettin

Смежные вопросы