Нахождение пути моего основного исполняемого файла с помощью блока по сравнению с AppDomain

Я нашел последний выпуск NetBeans, который включает поддержку C/C++, чтобы быть превосходным.

http://www.netbeans.org/features/cpp/index.html

24
задан shA.t 22 November 2017 в 10:02
поделиться

3 ответа

Я бы использовал GetEntryAssembly () вместо GetExecutingAssembly () .

Чтобы понять, почему, сделайте следующее:

  • Создайте новый консольный проект
  • Добавьте проект библиотеки классов ( ClassLibrary1 ) в решение и укажите на него ссылку из консольного проекта.
16
ответ дан 28 November 2019 в 23:57
поделиться

From: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.codebase.aspx

Assembly.CodeBase

To get the absolute path to the loaded manifest-containing file, use the Assembly.Location property instead.

If the assembly was loaded as a byte array, using an overload of the Load method that takes an array of bytes, this property returns the location of the caller of the method, not the расположение загруженной сборки.

Для AppDomain.CurrentDomain.BaseDirectory я, честно говоря, понятия не имею о различиях с практической точки зрения.

0
ответ дан 28 November 2019 в 23:57
поделиться

К сожалению, все вышеперечисленные методы могут дать сбой, если вы используете виртуализацию, такую ​​как постбилд XenoCode. Я протестировал множество методов и нашел другое решение здесь . Я обнаружил, что только

System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe"

возвращает правильное имя исполняемого файла. Таким образом, объединив имя файла с путем из Assembly.GetEntryAssembly (). Location , вы получите правильный путь к исполняемому файлу.

8
ответ дан 28 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: