Вот мой образец:
using System;
using Windows.Networking.Vpn;
static void main()
{VpnManagementAgent mgr = new VpnManagementAgent();
VpnNativeProfile profile = new VpnNativeProfile() { AlwaysOn = false,
NativeProtocolType = VpnNativeProtocolType.L2tp,
ProfileName = "MyConnection",
RememberCredentials = true, RequireVpnClientAppUI = true,
RoutingPolicyType = VpnRoutingPolicyType.SplitRouting,
TunnelAuthenticationMethod = VpnAuthenticationMethod.PresharedKey,
UserAuthenticationMethod = VpnAuthenticationMethod.Mschapv2, };
profile.Servers.Add("vpn.example.com");
VpnManagementErrorStatus profileStatus = await mgr.AddProfileFromObjectAsync(profile);
Console.WriteLine($"{profileStatus}\n"); }
Вот как я пытаюсь скомпилировать (из командной строки разработчика для VS 2019):
csc program.cs /r:Windows.Networking.Vpn.dll
Вот скриншот моих установленных наборов инструментов:
Вот мой результат:
Microsoft (R) Visual C# Compiler version 3.100.119.28106 (58a4b1e7)
Copyright (C) Microsoft Corporation. All rights reserved.
error CS0006: Metadata file 'Windows.Networking.Vpn.dll' could not be found
Вот ссылка от MSDN:
Assemblies:Windows.Networking.Vpn.dll, Windows.dll





Ваш код неверен. Пространство имен Windows.Сеть.Vpn предназначено для приложений UWP, и в вашем коде вы пытаетесь использовать функцию System.Console.WriteLine(), которая недопустима в данном контексте. Несмотря на то, что единственная ошибка, которую выдает csc.exe, это то, что файл не найден, это не ваша проблема. попробуйте создать новое приложение UWP в Visual Studio и скомпилировать его в Visual Studio, так как это намного проще.
Типы, которые вы ищете, определены в файлах метаданных среды выполнения Windows и реализованы в машинном коде. Вам нужно будет сослаться на файл winmd. Есть несколько сокращений (например, ссылка на метаданные, установленные вместе с ОС), но это сделает ваш проект хрупким. Как правило, вам понадобится ссылка на установленную версию SDK. Вы можете использовать переменные пути из командной строки VS, чтобы немного помочь, например. (с SDK 17763):
csc Program.cs \
-reference:"%WindowsSdkDir%\References\%WindowsSdkVersion%\Windows.Foundation.FoundationContract\3.0.0.0\Windows.Foundation.FoundationContract.winmd" \
-reference:"%WindowsSdkDir%\References\%WindowsSdkVersion%\Windows.Foundation.UniversalApiContract\7.0.0.0\Windows.Foundation.UniversalApiContract.winmd"
Тем не менее, это все еще будет иметь некоторую хрупкость, поскольку номера версий контракта в этих путях будут меняться при обновлении SDK. Система проекта VS считывает текущие контракты из "%WindowsSdkDir%\Platforms\UAP\%WindowsSdkVersion%\Platform.xml" или "%WindowsSdkDir%\Platforms\UAP\%WindowsSdkVersion%\PreviousPlatforms.xml", чтобы получить правильную информацию API для целевая версия операционной системы.