Ваша проблема в том, что AssemblyName.CodeBase
имеет значение NULL: он имеет тип string?
.
Вам необходимо добавить дополнительный код для обработки случая, когда .CodeBase
равен null
(или подавить его с помощью !
), например:
var codeBase = Assembly.GetEntryAssembly()?.GetName().CodeBase;
if (codeBase == null)
{
throw new Exception("cannot find exe code base");
}
var location = new Uri(codeBase);
или
var location = new Uri(assembly.GetName().CodeBase!);
Фактическое предупреждение, которое вы получите в этом случае, не имеет ничего общего с assembly
, это:
предупреждение CS8604: возможный нулевой ссылочный аргумент для параметра 'uriString' в 'Uri.Uri (string uriString)'.
Source (разверните панель «Предупреждения» в правом нижнем углу). Это говорит о том, что проблема в том, что строка передается в конструктор Uri
, т.е. строка, возвращаемая из .CodeBase
.