VS 2017: l'opzione di debug della sicurezza è impostata ma richiede il processo di hosting di Visual Studio che non è disponibile
La mia soluzione (che contiene una dozzina di progetti) funziona perfettamente in Visual Studio 2013.
In Visual Studio 2017, posso aprire la soluzione e compilarla.
Ma se avvio il debug, ottengo sistematicamente questo messaggio di errore:
L'opzione di debug di sicurezza è impostata ma richiede il processo di hosting di Visual Studio che non è disponibile in questa configurazione di debug. L'opzione di debug di sicurezza sarà disabilitata. Questa opzione può essere riattivata nella pagina delle proprietà Sicurezza. La sessione di debug continuerà senza debug di sicurezza
E poi, non succede niente. Niente inizia.
Per informazioni, questa è una soluzione con più progetti di avvio (incluso un progetto WPF).
Modifica: disabilitando l'opzione "Abilita impostazioni di sicurezza ClickOnce" in Progetto -> Proprietà -> scheda Sicurezza, funziona.
Risposte
Questo ha risolto il mio problema :
Molto probabilmente, hai accidentalmente capovolto il bit per eseguire il debug con le impostazioni di sicurezza di ClickOnce. Puoi ottenere le proprietà del progetto per la tua app, vai alla scheda "Sicurezza" e assicurati di deselezionare "Abilita impostazioni di sicurezza ClickOnce" o seleziona il pulsante di opzione "Questa è un'applicazione attendibile".
Nel caso in cui aiuti qualcun altro - ho lo stesso scenario - una soluzione di avvio multiplo che include un client che verrà distribuito con ClickOnce. Per eliminare il problema che il client non si avvia dopo aver ottenuto la finestra di dialogo Impostazioni di sicurezza, l'ho spostato più in alto nell'elenco nella finestra di dialogo dei progetti di avvio. Se il progetto client è sopra il progetto server nell'elenco, nessun errore, tutto esegue il debug. Se il progetto client è al di sotto del progetto server, viene visualizzato l'errore e il client non si apre mai. Questo non RISOLVE esattamente il problema, ma è una soluzione alternativa perfettamente adeguata per me.
EDIT: potrebbe essere necessario chiudere e riaprire Visual Studio affinché questa soluzione alternativa sia efficace.
Ho passato ore a cercare di capire il problema, questo lo ha risolto.
Vai a Progetto > Proprietà ...> Crea
Deseleziona la casella di controllo Preferisci 32 bit
MS ha rimosso il processo di hosting VS in VS2017 - vedere
Per questo motivo, modificando l'impostazione EnableSecurityDebugging nel file utente del progetto su True, la finestra di dialogo Error viene visualizzata di nuovo in fase di esecuzione. Facendo clic su OK nella finestra di dialogo, l'impostazione del file utente torna a False.
Per quanto ne so, non ci sono soluzioni alternative, anche se MS sembra pubblicare aggiornamenti VS molto frequenti (l'ultimo è 15.3) Nel frattempo le app ClickOnce. non sarà in grado di utilizzare l'opzione di debug della sicurezza.
Questo potrebbe probabilmente essere un problema tecnico in alcuni file di configurazione. "Abilita le impostazioni di sicurezza di ClickOnce" era già deselezionato nelle impostazioni del progetto, ma questa finestra di dialogo appariva comunque ogni volta che veniva avviata l'applicazione. Ho fatto quanto segue per sbarazzarmi di questo dialogo:
- Apri la pagina progetto-> impostazioni di sicurezza
- Seleziona "Abilita impostazioni di sicurezza ClickOnce"
- Deseleziona "Abilita impostazioni di sicurezza ClickOnce"
- Salvare le proprietà e avviare nuovamente l'applicazione
Ecco una soluzione alternativa che mi ha consentito di eseguire il debug della mia app ClickOnce in VS2017 senza ricevere il messaggio di errore "Impossibile determinare l'identità del chiamante" quando si accede all'archivio isolato. La soluzione alternativa dovrebbe funzionare anche in qualsiasi situazione che richieda le impostazioni di sicurezza di ClickOnce.
Per ricreare le impostazioni generate in precedenza quando sono state selezionate le impostazioni di sicurezza Abilita ClickOnce nella scheda Protezione delle proprietà del progetto, eseguire le operazioni seguenti:
1. Deseleziona Abilita impostazioni di sicurezza ClickOnce nella scheda Sicurezza delle proprietà del tuo progetto
2. Aggiungi quanto segue al tuo file App.Config se non è già presente
<runtime>
<NetFx40_LegacySecurityPolicyenabled="true"/>
</runtime>
3.Aggiungi un riferimento a Microsoft.Build.Tasks.v4.0 al tuo progetto
Il codice per ricreare le impostazioni di ClickOnce può essere posizionato ovunque, ma il seguente metodo Main di esempio illustra l'idea generale
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" });
}
}
}
}
È possibile che venga visualizzato il messaggio di avviso relativo al processo di hosting VS non disponibile quando si esegue per la prima volta il codice precedente, ma successivamente l'impostazione EnableSecurityDebugging nel file utente del progetto sarà stata impostata su False e il codice dovrebbe essere eseguito normalmente.
Grazie al team di ClickOnce di Microsoft per l'aiuto su questa soluzione alternativa.
Ho ancora un'altra ragione per cui questo messaggio potrebbe venire fuori. Nel mio caso, durante il test di clonazione della mia soluzione da Git, ho notato che Visual Studio ha deciso di impostare la piattaforma della soluzione Active su "Any CPU", mentre il mio progetto di avvio si rivolge esplicitamente a "x86". Ciò ha causato la mancata compilazione del progetto di avvio quando ho eseguito il comando build solution.
Selezionando la casella Build nel Configuration Manager per quel progetto è stato eliminato il messaggio di errore.
Nel caso qualcuno me lo chieda, non ricordo esattamente perché quel progetto si rivolge esplicitamente a x86.
Ho appena avuto lo stesso problema. Preferisci 32 bit era disabilitato. Ho cercato nel percorso di output ed era bin \ Release.
Ho creato un percorso bin \ debug e ho impostato il percorso di output su questo. Risolto.
Per me la soluzione era passare a "L'applicazione è disponibile anche offline" nella scheda Pubblica delle proprietà del progetto
Prima avevo "L'applicazione è disponibile solo online"
Il mio problema sembrava essere associato alla cartella in cui si trovava la soluzione. La mia soluzione del ramo DEV ha funzionato senza problemi, ma il ramo CERT (cartella locale diversa) ha fornito il messaggio di debug della sicurezza quando sono state controllate le impostazioni di sicurezza di ClickOnce.
La mia soluzione: avvia VS2019 come amministratore. Il problema è stato risolto durante il debug. E ora posso avviare senza amministratore e il debug è ancora buono.