Чтобы включить сложный сценарий отладки, мне нужна моя сборка, чтобы выяснить, где находятся исходные файлы во время выполнения.Как узнать каталог проекта сборки?
Assembly
объект не знает эту информацию, и это, вероятно, не должно. Файл .pdb
явно знает, но я понятия не имею, как его разобрать. Так что я подумал, что я могу маркировать свою сборку во время сборки с атрибутом, то эффект:
[assembly: AssemblyMetadata("ProjectDirectory", $(ProjectDir))]
Я не могу использовать текущий каталог, так как он установлен IIS в какой-то временный каталог во время отладки. Я также не хочу жестко закодировать каталог.
Ближайший, к которому я пришел, в решении этого вопроса, использует свойство Assembly.CodeBase
. Он указывает на каталог, в котором было построено решение IIS (Solution/IISProject/bin/Debug/
, а не /Solution/source/MyLibrary/
), но не каталог моего проекта. Хакерное решение поднимается на несколько уровней оттуда, а затем переходите на несколько уровней обратно в папку проекта. Я бы очень хотел избежать этого взлома, если это возможно.
Зачем вам это нужно? Если вы можете сказать нам, почему это интересная информация для хранения, то, возможно, мы сможем предложить вам альтернативные решения. Я не думаю, что есть встроенный способ получить то, что вы хотите. –
@ LasseV.Karlsen Мне нужно это, чтобы иметь возможность перекомпилировать части решения (эти части являются языком, специфичным для домена) во время выполнения отладки. Я уверен, что есть что-то, что можно сделать. Моя первая мысль состояла в том, чтобы проанализировать .pdb, который, очевидно, имеет эту информацию, но, по-видимому, это нелегко разобрать. – Gleno