Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Начиная с .NET 7 и Visual Studio 2022 версии 17.4, можно получить доступ к свойствам развертывания ClickOnce с помощью переменной среды.
Средство запуска приложений предоставляет общие свойства развертывания приложения ClickOnce с запущенным приложением (.NET только). Свойства предоставляются приложению с помощью переменных среды.
Имена переменных тесно соответствуют свойствам класса .NET Framework<xref:System.Deployment.Application.ApplicationDeployment>. Новые имена переменных включают ClickOnce_ префикс:
- ClickOnce_IsNetworkDeployed
- ClickOnce_ActivationUri
- ClickOnce_CurrentVersion
- ClickOnce_DataDirectory
- ClickOnce_IsFirstRun
- ClickOnce_TimeOfLastUpdateCheck
- ClickOnce_UpdatedApplicationFullName
- ClickOnce_UpdatedVersion
- ClickOnce_UpdateLocation
Помимо этих изменений, доступно новое свойство, которое возвращает версию средства запуска приложений:
ClickOnce_LauncherVersion
Приложение .NET может использовать эти свойства напрямую или косвенно.
Note
С помощью этого метода можно получить доступ к свойствам развертывания приложений, но .NET 7 не поддерживает эквивалент методов ApplicationDeployment.
Свойства доступа
В следующем примере кода показано, как напрямую получить доступ к двум свойствам: ClickOnce_IsNetworkDeployed и ClickOnce_ActivationUri.
NameValueCollection nameValueTable = new NameValueCollection();
if (Environment.GetEnvironmentVariable("ClickOnce_IsNetworkDeployed")?.ToLower() == "true")
{
string value = Environment.GetEnvironmentVariable("ClickOnce_ActivationUri");
Uri activationUri = string.IsNullOrEmpty(value) ? null : new Uri(value);
if (activationUri != null)
{
nameValueTable = HttpUtility.ParseQueryString(activationUri.Query);
Console.WriteLine("Query string: " + activationUri.Query);
Console.ReadKey();
}
}
Для косвенного использования этих свойств требуется реализация нового ApplicationDeployment класса на уровне приложения. Этот класс абстрагирует чтение переменных среды и предоставляет аналогичный интерфейс старому классу .NET Framework.
Пример реализации этого класса см. в ApplicationDeployment.cs.
В следующем фрагменте кода показано, как использовать этот класс:
NameValueCollection nameValueTable = new NameValueCollection();
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
if (ad.ActivationUri != null)
{
nameValueTable = HttpUtility.ParseQueryString(ad.ActivationUri.Query);
}
}
Параметры ActivationUri и URL
Начиная с .NET 7, dotnet-mage поддерживает новый коммутатор -TrustURLParameters или-tu. Этот параметр позволяет задать необходимый атрибут развертывания с помощью средства dotnet-mage. Это изменение является улучшением по сравнению со старым инструментом Mage, который не поддерживал эту функциональность, а также требовал ручного изменения манифеста приложения для добавления атрибута trustURLParameters, <deployment install="true" trustURLParameters="true">.
Необходимо задать для trustURLParameters значение true, чтобы разрешить приложению доступ к параметрам ActivationUri и URL-адреса.