Как получить текущий путь к каталогу проекта с помощью C#
хорошо, вот вопрос. У меня есть два проекта: консоль C# и библиотека классов. Я получаю доступ / вызываю метод библиотеки классов из консольного приложения. В проекте библиотеки классов есть папка с именем Files.
мне нужно получить путь к папке файлов библиотеки классов, но всякий раз, когда я использую
System.IO.Directory.GetCurrentDirectory();
и
Environment.CurrentDirectory;
это дает мне путь Консольный проект, который я использую для вызова метода.
выше методы дают мне путь, как
C:ConsoleProbinDebug
но мне нужен путь проекта библиотеки классов
C:ClassLibProbinDebug
пожалуйста
7 ответов
после компиляции и запуска кода "путь к проекту" не имеет смысла. Все, что вы можете определить расположение файлов скомпилированных сборок. И вы можете делать только то, что вы просите, если ваш Консольный проект ссылается на встроенную библиотеку DLL "class library" напрямую, а не через ссылку на проект.
затем, вы можете использовать отражение, чтобы получить Assembly пути;
string path = Assembly.GetAssembly(typeof (SomeClassInOtherProject)).Location;
Если вы загружаете библиотеку классов из другой сборки.
string Path = System.Reflection.Assembly.GetAssembly(typeof({LibraryClassName})).Location;
string PathToClassLibPro = Path.GetDirectoryName( Path);
заменить {LibraryClassName}
С именем класса вашей библиотеки.
Я считаю, что проблема:
поскольку Консольный проект имеет ссылку на файл DLL, он использует DLL для вызова любых методов. В это время он возвращает расположение DLL библиотеки классов projct, которая находится в каталоге bin консольного проекта, и она не знает о физическом расположении проекта библиотеки классов.
таким образом, по сути, он возвращает тот же путь проекта. Мне придется переместить оба проекта в один каталог, чтобы решить эту проблему вопрос.
вы должны иметь возможность использовать Directory.GetParent(Directory.GetCurrentDirectory())
несколько раз, чтобы получить каталоги более высокого уровня, а затем добавить путь к каталогу lib в конце этого.
Я бы рекомендовал один из двух вариантов.
Если файлы небольшие, включите их в библиотеку классов и при необходимости передайте их во временное местоположение
другой вариант-скопировать файлы во время построения в выходной каталог и использовать их таким образом. В случае нескольких совместных проектов лучше иметь общую папку bin, скопируйте сборки и бежать из этого места.
несмотря на то, что я не могу найти хорошее решение, я использую этот трюк : пока вы хотите вернуться к своему идеальному пути, вы должны добавить