Повторный импорт C # .dll в PowerShell не обновляет классы

#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 , что это путь к последней сборке? Может быть иначе, если вы тем временем изменили профиль сборки или настройки в VS

4. Да, я действительно удалил старый. dll перед ее повторной сборкой, чтобы убедиться

5. Это, конечно, странно. Вы пробовали создать новый скрипт и вставить содержимое исходного? И вы уверены, что не путаете Debug Release сборки DLL с другими? (это неоднократно сбивало меня с толку). Кроме того, вместо Add-Type более новых версий PS (5 и выше? — не уверен) вы можете использовать using module .