Я нашел последний выпуск NetBeans, который включает поддержку C/C++, чтобы быть превосходным.
Я бы использовал GetEntryAssembly ()
вместо GetExecutingAssembly ()
.
Чтобы понять, почему, сделайте следующее:
ClassLibrary1
) в решение и укажите на него ссылку из консольного проекта. 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
я, честно говоря, понятия не имею о различиях с практической точки зрения.
К сожалению, все вышеперечисленные методы могут дать сбой, если вы используете виртуализацию, такую как постбилд XenoCode. Я протестировал множество методов и нашел другое решение здесь . Я обнаружил, что только
System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe"
возвращает правильное имя исполняемого файла.
Таким образом, объединив имя файла с путем из Assembly.GetEntryAssembly (). Location
, вы получите правильный путь к исполняемому файлу.