it-swarm.com.de

VS 2017: Die Sicherheitsdebuggingoption ist festgelegt, erfordert jedoch den Hostingprozess von Visual Studio, der nicht verfügbar ist

Meine Lösung (die ein Dutzend Projekte enthält) funktioniert perfekt in Visual Studio 2013. 

In Visual Studio 2017 kann ich die Lösung öffnen und kompilieren. 

Wenn ich jedoch das Debugging starte, erhalte ich systematisch diese Fehlermeldung: 

Die Sicherheits-Debugging-Option ist festgelegt, erfordert jedoch Visual Studio Hosting-Prozess, der in dieser Debugging-Konfiguration nicht verfügbar ist.Der Sicherheits-Debugging-Option wird deaktiviert. Diese Option kann in .__ wieder aktiviert werden. die Sicherheitseigenschaftsseite. Die Debugging-Sitzung wird ohne .__ fortgesetzt. Sicherheits-Debugging

 enter image description here

Und dann passiert nichts. Nichts beginnt 

Zur Information ist dies eine Lösung mit mehreren Startprojekten (einschließlich eines WPF-Projekts).

Edit: Durch Deaktivieren der Option "ClickOnce-Sicherheitseinstellungen aktivieren" unter Projekt -> Eigenschaften -> Registerkarte Sicherheit funktioniert es.

32
StevenPF

Falls es anderen hilft - ich habe das gleiche Szenario - eine Lösung mit mehreren Starts, die einen Client enthält, der mit ClickOnce bereitgestellt wird. Um das Problem zu beheben, dass der Client nach dem Abrufen des Dialogfelds "Sicherheitseinstellungen" nicht gestartet wird, habe ich es in der Liste im Dialogfeld "Startprojekte" nach oben verschoben. Wenn sich das Clientprojekt in der Liste über dem Serverprojekt befindet, werden keine Fehler angezeigt. Wenn sich das Clientprojekt unterhalb des Serverprojekts befindet, wird der Fehler angezeigt, und der Client wird nie geöffnet. Dies löst das Problem zwar nicht genau, ist aber für mich eine vollkommen angemessene Lösung.

BEARBEITEN: Möglicherweise müssen Sie Visual Studio schließen und erneut öffnen, damit diese Problemumgehung wirksam wird.

15
Scott O.

Dies hat mein Problem gelöst: https://social.msdn.Microsoft.com/Forums/vstudio/en-US/3905f6ac-737b-420f-b312-3dd8e3676c35/getting-anunexplained-securityexception?forum=wpf

Höchstwahrscheinlich haben Sie aus Versehen das Bit zum Debuggen umgedreht mit ClickOnce-Sicherheitseinstellungen. Können Sie die Projekteigenschaften erhalten Wechseln Sie für Ihre App zur Registerkarte "Sicherheit", und deaktivieren Sie "Aktivieren Sie die ClickOnce-Sicherheitseinstellungen" oder aktivieren Sie das Optionsfeld "Dies ist eine vollständige Vertrauenswürdige Anwendung".

9
ATD

MS hat den VS-Hosting-Prozess in VS2017 entfernt - siehe

https://vslive.com/Blogs/News-and-Tips/2017/02/Debugging-Visual-Studio-2017-aims-to-speed-up-your-least-favorite-job.aspx

Aus diesem Grund ändert sich die Einstellung EnableSecurityDebugging in der Projektbenutzerdatei in True. Der Fehlerdialog wird zur Laufzeit erneut angezeigt. Wenn Sie im Dialogfeld auf OK klicken, wird die Einstellung der Benutzerdatei wieder auf False gesetzt.

AFAIK gibt es keine Problemumgehung, obwohl MS sehr häufig VS-Updates zu veröffentlichen scheint (letzte Version ist 15.3). Inzwischen gibt es ClickOnce-Apps. kann die Sicherheits-Debugging-Option nicht verwenden. 

3
jon morgan

Dies könnte in einigen Konfigurationsdateien eine Störung sein. Die Option "ClickOnce-Sicherheitseinstellungen aktivieren" war bereits in den Projekteinstellungen nicht markiert. Dieses Dialogfeld wurde jedoch immer angezeigt, wenn die Anwendung gestartet wurde. Ich habe folgendes getan, um diesen Dialog loszuwerden:

  1. Öffnen Sie die Seite Projekt-> Sicherheitseinstellungen
  2. Markieren Sie "ClickOnce-Sicherheitseinstellungen aktivieren".
  3. Markierung für "ClickOnce-Sicherheitseinstellungen aktivieren" aufheben
  4. Speichern Sie die Eigenschaften und starten Sie die Anwendung erneut

Eigenschaften

2
Mats

Ich habe stundenlang versucht, das Problem herauszufinden, das hat es gelöst.

Gehen Sie zu Projekt> Eigenschaften ...> Build.

Deaktivieren Sie das Kontrollkästchen 32-Bit bevorzugen.

 enter image description here

2
Morris S

Hier ist eine Problemumgehung, die es mir ermöglichte, meine ClickOnce-App in VS2017 zu debuggen, ohne dass beim Zugriff auf Isolated Storage die Fehlermeldung angezeigt wird, dass die Identität des Anrufers nicht ermittelt werden konnte. Die Problemumgehung sollte auch in Situationen funktionieren, in denen die ClickOnce-Sicherheitseinstellungen erforderlich sind.

Gehen Sie folgendermaßen vor, um die Einstellungen neu zu erstellen, die zuvor generiert wurden, als die Sicherheitseinstellungen "ClickOnce aktivieren" auf der Registerkarte "Sicherheit" der Projekteigenschaften aktiviert wurden.

1. Deaktivieren Sie auf der Registerkarte Sicherheit der Eigenschaften Ihres Projekts die Option ClickOnce-Sicherheitseinstellungen aktivieren

2.Fügen Sie Ihrer App.Config-Datei Folgendes hinzu, falls noch nicht vorhanden

<runtime>
  <NetFx40_LegacySecurityPolicyenabled="true"/>
</runtime>

3. Fügen Sie Ihrem Projekt einen Verweis auf Microsoft.Build.Tasks.v4.0 hinzu

Der Code zum Wiederherstellen der ClickOnce-Einstellungen kann überall verwendet werden, aber die folgende Main-Beispielmethode veranschaulicht die allgemeine Idee

using System;
using System.Reflection;
using System.Runtime.Hosting;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.Windows.Forms;
using Microsoft.Build.Tasks.Deployment.ManifestUtilities;


namespace SecurityDebuggingTest
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            if (args.Length > 0 && args[0] == "startui")
            {
                Application.Run(new Form1());
            }
            else
            {
                PermissionSet permissions = new PermissionSet(PermissionState.Unrestricted);
                string AppName = Assembly.GetEntryAssembly().GetName().Name;
                string AppExe = $"{AppName}.exe";
                string DebugSecurityZoneURL = $"{AppExe}.manifest";
                string AppManifestPath = $"{AppName}.application";
                string appType = "win32";
                AssemblyIdentity ca = AssemblyIdentity.FromManifest(AppManifestPath);
                string appIdentitySubString = $"Version={ca.Version}, Culture={ca.Culture}, PublicKeyToken={ca.PublicKeyToken}, ProcessorArchitecture={ca.ProcessorArchitecture}";
                string assemblyIdentity = $"http://tempuri.org/{AppManifestPath}#{AppManifestPath}, {appIdentitySubString}/{AppExe}, {appIdentitySubString},Type={appType}";
                System.ApplicationIdentity applicationIdentity = new System.ApplicationIdentity(assemblyIdentity);

                ApplicationTrust appTrust = new ApplicationTrust();
                appTrust.DefaultGrantSet = new PolicyStatement(permissions, PolicyStatementAttribute.Nothing);
                appTrust.IsApplicationTrustedToRun = true;
                appTrust.ApplicationIdentity = applicationIdentity;

                AppDomainSetup adSetup = new AppDomainSetup
                {
                    ApplicationBase = AppDomain.CurrentDomain.BaseDirectory,
                    ActivationArguments = new ActivationArguments(
                        ActivationContext.CreatePartialActivationContext(
                            applicationIdentity,
                            new string[] { AppManifestPath, DebugSecurityZoneURL })
                    ),
                    ApplicationTrust = appTrust
                };

                Evidence e = new Evidence();
                e.AddHostEvidence(appTrust);

                AppDomain a = AppDomain.CreateDomain("Internet Security Zone AppDomain", e, adSetup, permissions);
                a.ExecuteAssembly(AppExe, e, new string[] { "startui" });
            }
        }
    }
}

Möglicherweise wird die Warnmeldung angezeigt, dass der VS-Hosting-Prozess nicht verfügbar ist, wenn Sie den obigen Code zum ersten Mal ausführen. Danach wird die Einstellung EnableSecurityDebugging in der Benutzerdatei Ihres Projekts auf "False" gesetzt und der Code sollte normal ausgeführt werden.

Vielen Dank an das ClickOnce-Team von Microsoft für die Hilfe bei dieser Problemumgehung. 

1
jon morgan

Ich hatte gerade das gleiche Problem. Bevorzugen Sie 32-Bit wurde deaktiviert. Ich habe in den Ausgabepfad geschaut und es war bin\Release.
Ich habe einen bin\debug-Pfad erstellt und den Ausgabepfad auf diesen Pfad gesetzt. Aufgelöst.

1
Mindy J. Leslie

Ich habe noch einen weiteren Grund, warum diese Nachricht auftaucht. In meinem Fall habe ich beim Testen des Klonens meiner Lösung von Git festgestellt, dass Visual Studio beschlossen hat, die Active Solution-Plattform auf "Beliebige CPU" zu setzen, während mein Startprojekt explizit auf "x86" abzielt. Dies führte dazu, dass das Startprojekt beim Ausführen des Befehls build solution nicht erstellt wurde.

Durch Aktivieren des Kontrollkästchens Erstellen in Configuration Manager für dieses Projekt wurde die Fehlermeldung beseitigt.

Falls jemand fragt, ich erinnere mich nicht genau, warum dieses eine Projekt explizit auf x86 abzielt.

1
javon27

Für mich bestand die Lösung darin, auf der Registerkarte Veröffentlichen der Projekteigenschaften auf "Die Anwendung ist auch offline verfügbar" zu wechseln

Vorher hatte ich "Die Anwendung ist nur online verfügbar"

0
Matus