MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Изменение имени dll с исходного Microsoft.Win32.TaskScheduler.dll на my.dll делает её неработоспособной"
Answer 820610
Да, CLR устроена так, что в общем случае нельзя просто взять и переименовать сборку. По умолчанию, CLR при поиске сборки ориентируется на ее внутреннее имя (из метаданных), но при этом ищет не по внутреннему имени, а по имени файла, т.е. по строкам типа
[application base] / [assembly name].dll
и т.п. Если нужно, чтобы при поиске сборки использовалось имя файла, нужно использовать параметр codebase в конфигурации:<configuration> ... <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="MyLibrary"/> <codeBase href="my.dll"/> </dependentAssembly> </assemblyBinding> </runtime> ... </configuration>
Если сборка использует строгое имя, нужно будет указать больше параметров:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Win32.TaskScheduler" publicKeyToken="c416bc1b32d97233" culture="neutral"/> <codeBase href="my.dll" version="2.8.1.0"/> </dependentAssembly> </assemblyBinding> </runtime>
Документация: How the Runtime Locates Assemblies
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.