#c# #.net #powershell #dll #.net-assembly
#c# #.net #powershell #dll #.net-сборка
Вопрос:
В настоящее время у меня есть сценарий PowerShell, который использует Add-Type для импорта некоторых классов из C # .dll.
Я добавил некоторые методы в свой класс, но не могу их использовать, потому что получаю исключение «метод не найден».
Например, я добавил подобную функцию в свой класс TestClass.cs:
public string giveMeAString(string myString)
{
return myString;
}
В верхней части моего скрипта я импортирую .dll, как Add-Type -Path $pathToDll
Как и ожидалось, перед вызовом Add-Type я не могу создать экземпляр этого класса. После того, как вызов выполняется нормально, используя $testClass = [TestClass]::new()
Однако я не могу использовать этот метод $testClass.giveMeAString()
, поскольку он не существует. Я получаю исключение «метод не найден».
Я пытался удалить dll и запустить dotnet build
, я пробовал dotnet clean
, я пробовал использовать Import-Module $pathToDll
вместо этого, я пробовал делать все это, а затем перезагружать свой компьютер и, вероятно, еще пару вещей. Я в полной растерянности, и мой проект полностью застопорился, пока я не заработаю.
Чтобы еще больше усложнить ситуацию, если я создам консольное приложение в .NET и импортирую туда класс, я смогу получить доступ к методу просто отлично.
Для справки, это в коде Visual Studio с использованием omnisharp.
Кто-нибудь может дать несколько советов?
Комментарии:
1. Вы не можете выгрузить сборку из приложения после загрузки, поэтому вам придется запустить новый экземпляр
powershell.exe
и повторно импортировать сборку снова.2. Интересно. Я определенно это сделал. Фактически я перезапустил всю свою систему и все еще получал ошибку.
3. И вы уверены
$pathToDll
, что это путь к последней сборке? Может быть иначе, если вы тем временем изменили профиль сборки или настройки в VS4. Да, я действительно удалил старый. dll перед ее повторной сборкой, чтобы убедиться
5. Это, конечно, странно. Вы пробовали создать новый скрипт и вставить содержимое исходного? И вы уверены, что не путаете
Debug
Release
сборки DLL с другими? (это неоднократно сбивало меня с толку). Кроме того, вместоAdd-Type
более новых версий PS (5 и выше? — не уверен) вы можете использоватьusing module
.