|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2.
И всё, sFilePath перезаписать нельзя пока процесс не будет прибит. Как обойти? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 19:25 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Antonariy, Использовать AppDomain и при создании AppDomain и выставлять AppDomainSetup.ShadowCopyFiles в true пробовал? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 19:42 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Нет. Где есть пример этого колдунства? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 21:06 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Axeleron, по сути, он загрузит сборку, но как он её выгрузит и загрузит по новой? файл то можно будет перезаписать, а толку то ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 21:25 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Чтобы было понятно, что происходит: файл блокируется студией посредством расширения, которое копается в его объектной модели. А разблокироваться он должен для того, чтобы студия смогла его перекомпилировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 22:27 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
AntonariyЧтобы было понятно, что происходит: файл блокируется студией посредством расширения, которое копается в его объектной модели. А разблокироваться он должен для того, чтобы студия смогла его перекомпилировать.Знаю решение для T4 Text Template. Надо? Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 07:25 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
AntonariyЧтобы было понятно, что происходит: файл блокируется студией посредством расширения, которое копается в его объектной модели . А разблокироваться он должен для того, чтобы студия смогла его перекомпилировать.Немного расстрою. Если копаешься в сборке рефлекшеном, то просто так загрузить сборку в отдельный домен, для его последующей выгрузки, не получится. Код, анализирующий модель сборки, так же должен быть загружен в выгружаемый домен. Тогда этот код можно будет вызвать методом AppDomain.CreateInstanceAndUnwrap, после чего выгрузить домен. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 07:37 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Тогда пойдем другим путём Код: vbnet 1. 2.
Сборка загружается, но обращение к объектной модели завершается ошибкой FileNotFoundException - не может найти зависимости, а ищет здесь: Код: plaintext
Возможно ли этот путь подменить? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 10:32 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
AntonariyТогда пойдем другим путём Код: vbnet 1. 2.
Сборка загружается, но обращение к объектной модели завершается ошибкой FileNotFoundException - не может найти зависимости, а ищет здесь: Код: plaintext
Возможно ли этот путь подменить?Он не может найти зависимые сборки. Может это как-то и можно организовать, но на мой взгляд проще как-то так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Возможны ошибки, рассматривай это как концепт. Отпиши потом работает или нет, мне тоже интересно. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 12:16 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
зы: Конечно же File.Delete("MyAnalisingAssembly.dll") разместить после AppDomain.Unload(d) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 12:18 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Такой вариант ближе к истине, но последняя строчка завершается ошибкой: Код: vbnet 1. 2. 3. 4. 5.
Тип "AssemblyLoader.AssemblyAnalyser" сборки "AssemblyLoader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0daea82d6110b4cf" не помечен как сериализуемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 21:24 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Пометил как <Serializable>, раз уж настаивает. Код: vbnet 1. 2. 3. 4. 5. 6.
получил: Не разрешен тип члена "AssemblyLoader.AssemblyAnalyser,AssemblyLoader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0daea82d6110b4cf". ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 21:38 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Победил. Помогло это: Код: vbnet 1. 2.
и статья: http://weblog.west-wind.com/posts/2009/Jan/19/Assembly-Loading-across-AppDomains На ее основании слепил дополнительный класс: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
использование: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 01:45 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Не совсем победил. При отдаче ссылки на Reflection.Assembly за пределы домена, в котором сборка создается, она загружается и в вызывающий домен, то есть домен студии. Придется всю обработку сборки в AssemblyAnalyser перетаскивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 16:47 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
AntonariyПридется всю обработку сборки в AssemblyAnalyser перетаскивать.Ну да, ради этого и предложена сборка AssemblyAnalyser.dll, возвращающая модель независимую от классов рефлекшена. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 04:56 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Алексей КAntonariyПридется всю обработку сборки в AssemblyAnalyser перетаскивать.Ну да, ради этого и предложена сборка AssemblyAnalyser.dll, возвращающая модель независимую от классов рефлекшена.Отдельная сборка не нужна, достаточно классов AssemblyAnalyser и AssemblyData, но AssemblyData должен быть сериализуемым (или возможно тоже наследоваться от MarshalByRefObject, уже лень проверять). AssemblyAnalyser инкапсулирует работу с Reflection и типами тех сборок, которые должны быть выгружены, создается в отдельном домене, и этого достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 10:37 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
AntonariyАлексей Кпропущено... Ну да, ради этого и предложена сборка AssemblyAnalyser.dll, возвращающая модель независимую от классов рефлекшена.Отдельная сборка не нужна, достаточно классов AssemblyAnalyser и AssemblyData, но AssemblyData должен быть сериализуемым (или возможно тоже наследоваться от MarshalByRefObject, уже лень проверять). AssemblyAnalyser инкапсулирует работу с Reflection и типами тех сборок, которые должны быть выгружены, создается в отдельном домене, и этого достаточно.Ну это чтобы во второй домен не загружалось ничего лишнего. Может это "экономия на спичках", спорить не буду. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 11:01 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
При компиляции выхватил ошибку, что заблокирован pdb-файл, перезаписать невозможно. Повторить не получилось. По-моему студия надо мной издевается. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 15:14 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Теперь не получается повторить ситуацию, чтобы все работало. Даже откатился к варианту с AssemblyAnalyser в отдельной сборке, гадский pdb блокируется и всё. авторНе удалось скопировать "obj\Debug\PMan.pdb" в "bin\PMan.pdb" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 18:23 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 09:42 |
|
Reflection.Assembly блокирует файл.
|
|||
---|---|---|---|
#18+
Алексей КЕщё можно исходники парситьЯ начал с парсинга объектной модели солюшена, в ней тоже есть вся необходимая инфа. В 12й студии все работало, в 13й все работало, а в 15 фигакс, и эти уроды изменили объектную модель, а интероп devenv (объектная модель студии на com) превратили в полное говно, описывающее дай бог половину com-модели devenv, из-за чего я так и не нашел пропавших свойств. Пришлось перебираться на Reflection. Осваивать новую монструозную объектную модель, большая часть которой мне не нужна? Ну уж дудки, пока потерплю, а потом домучаю освобождение файлов. А может в сервис-паке devenv приведут в божеский вид. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 10:50 |
|
|
start [/forum/topic.php?fid=20&fpage=73&tid=1401066]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 337ms |
total: | 458ms |
0 / 0 |