Frage

Jedes Mal, wenn ich bauen oder veröffentlichen, eine Web-Site, Visual Studio versucht der web.config Datei zu überprüfen, so dass es zahlreiche Baugruppen hinzufügen können, die erforderlich sind, nicht.

Mit anderen Worten:

web.config vor:

<configuration>
   <system.web>
      <compilation>
         <assemblies>
         </assemblies>
      </compilation>
   </system.web>
</configuration>

web.config nach:

<configuration>
   <system.web>
      <compilation>
         <assemblies>
             <add assembly="Microsoft.ReportViewer.Common... />
             <add assembly="Microsoft.ReportViewer.WinForms... />
             <add assembly="System.DirectoryServices... />
             <add assembly="System.Windows.Forms... />
             <add assembly="ADODB... />
             <add assembly="System.Management... />
             <add assembly="System.Data.OracleClient... />
             <add assembly="Microsoft.Build.Utilities... />
             <add assembly="Microsoft.ReportViewer.ProcessingObjectModel... />
             <add assembly="System.Design... />
             <add assembly="Microsoft.Build.Framework... />
         </assemblies>
      </compilation>
   </system.web>
</configuration>

Keine dieser Baugruppen erforderlich sind, und die meisten existieren nicht auf dem Ziel Test oder Produktion, Server.

Ich halte sie jedes Mal, wenn ich bauen zu löschen, aber es wird immer real ärgerlich wirklich schnell.

Im Moment meine Abhilfe ist web.config zu verlassen schreibgeschützt -. So Visual Studio kann nicht Baugruppen, um es hinzuzufügen


Update

Screenshots als Beweis:

Projekt -Eigenschaftenseiten vor :

Web.Config vor:

Projekt -Eigenschaftenseiten nach:

Web.config nach:

Update Zwei

Es sollte ausdrücklich darauf hingewiesen werden, dass die Web-Seite funktioniert ohne diese Fremd Referenzen hinzugefügt werden. Als Zwischenlösung ist web.config zu halten schreibgeschützt, und klicken Sie auf Abbrechen , wenn Visual Studio beschwert sich, dass es schreibgeschützt ist, als sie es zu ändern versucht. Wenn ich nur Visual Studio stoppen versuchen, es in erster Linie zu ändern ...


Update Drei

Es sieht aus wie es nicht möglich ist. Jemand kann sich frei fühlen, die richtige Antwort zu geben „ Sie können nicht Visual Studio stoppen Hinzufügen von Baugruppen zu Ihrer web.config .“ und ich werde es markieren.

Der einzige Grund, warum ich die Frage auf mich zu halten ist, dass hoffentlich jemand die super-geheime Option kennt, oder einen Registrierungsschlüssel oder ein Projekt oder eine Lösung Einstellung, Visual Studio zu sagen, aufhören zu denken.


Update Vier

Ich habe die akzeptierte Antwort nicht akzeptieren, und ich würde es unaccept, wenn ich könnte. Ich bin immer noch die Hoffnung für das Allheilmittel. Aber im Moment bin ich Neigung zu:

  • Antwort: kann nicht getan werden ( manu08 )
  • Umgehung: gefiltert GAC Baugruppen Registrierungsschlüssel ( Nebakanezer )

Wie kann ich Visual Studio aus der Addition Baugruppen meinen web.config stoppen?

Referenzen

War es hilfreich?

Lösung

habe ich VS2005 einen .net 1.1 (VS2003) aspx zu bearbeiten und sie gespeichert, dann wird die web.config auf mysteriöse Weise im Netz hat. 2.0 Baugruppen hinzugefügt:

Wenn ich VS2008 oder VS2010 verwendet, dies nicht geschieht. Also ich glaube, das ist ein Fehler in der VS2005 IDE ist.

Andere Tipps

Vielleicht ist die „Avatar DotNet Library“ Verweisen auf diese Baugruppen von selbst aus. Die Referenzen eines referenzierte Assembly benötigt, um richtig ein Projekt bereitstellen. Wie sonst könnte das referenzierte Montagearbeiten?

Beachten Sie, dass es möglich ist, dass Ihr referenzierte Assembly nicht seine eigenen Referenzen nicht verwendet, obwohl sie vorhanden ist.

Edit:. Sie können das große Werkzeug "Net Reflector" verwenden, um dies zu überprüfen

ich dieses Problem mit Visual Studio 2005 hatte (aber ich bin froh zu berichten, dass die Lösung für VS 2008 funktioniert, finden Sie bolded Text). Es gibt einen Registrierungsabschnitt, den VS überprüft, bevor es Baugruppen die Datei web.config erstellt.

Hier ist der Schlüssel:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}\FilteredGACReferences

Also, lassen Sie uns sagen, dass Sie nicht Visual Studio wollen die Microsoft.VisualStudio.Designer.Interfaces Montage zu Ihrem web.config hinzuzufügen. Fügen Sie den folgenden Eintrag in der Registry und Sie werden eingestellt.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}\FilteredGACReferences\Microsoft.VisualStudio.Designer.Interfaces

Es funktionierte perfekt für mich. Und ja, wird der Rest des Teams hat das gleiche zu tun, aber zumindest haben Sie nicht manuell die Einträge entfernen jedes Mal:)

Um es für VS 2008 funktioniert - nur die 8.0 in dem Registrierungspfad zu 9.0 ändern

Konvertieren Sie "Web Site" Projekt zu einem "Web Application" Projekt.

A "Web Site" nicht über eine Projektdatei, so dass es enthält alle Montage Referenzen in der web.config. Ein „Web Project“ hat eine Projektdatei, und alle Verweise werden in der Projektdatei gespeichert.

Entfernen Sie die Referenzen.

  • Wenn es sich um eine Web-App ist: Sie können die Referenzen unter sehen Lösung Explorer .

  • Wenn es eine Website ist: Rechtsklick auf das Projekt auf Projektmappen-Explorer und wählen Sie Property Pages . Verwalten Sie sie dort.

HTH

Wenn eine freigegebene Assembly auf sie verweist, dann werden sie auch zu dem anrufenden Projekt hinzugefügt werden.

Da die Avatar-Bibliothek macht diese Referenzen, fügt Visual Studio diese Verweise auf das Hauptprojekt als auch. Ansonsten, da die Referenz ein Anruf in die Avatar-Bibliothek fehlschlagen könnte es braucht fehlt.

Nun könnte dies wie ein Hack erscheinen, aber Ihre Anforderungen eine andere Möglichkeit gegeben wäre, den Avatar Montage dynamisch zur Laufzeit mit Assembly.Load oder Loadfrom zu laden. Dies würde einen Verweis hält aus dem Hauptprojekt und soll dann die zusätzliche Referenzlinien in der web.config verhindern. Dies wäre allerdings nur dann wirklich sinnvoll sein, wenn Sie nur eine kleine Anzahl von Klassen aus dem Avatar-Projekt verwendet haben. Ich würde ein drittes Projekt machen, dass beiden Projekte verweisen, die Schnittstellen gehalten, die eine oder mehr Avatar-Klassen für das Hauptprojekt umgesetzt, um strikte Typisierung zu halten, wenn Avatar Instanzen Handhabung. Ich gebe zu, das viel mehr Arbeit sein könnte, die bisher Antworten vorgelegt. Wenn Ihr Interesse an dieser Methode Google-Suche für Plugins in .Net Erstellung

Solange Sie eine Website verwenden, anstatt ein Webapp, weiß ich nicht von irgendeiner Weise von Visual Studio zu stoppen Baugruppen zu Ihrem web.config hinzufügen. Das gleiche Problem der Sorten geschieht für Lösungen meiner Firma auch.

Sie können nicht Visual Studio stoppen von Baugruppen zu Ihrer web.config hinzufügen.

Sie können leider nicht Visual Studio aus stoppen Baugruppen web.config Hinzufügen , aber nicht alles verloren ist.

Ich habe dies in der Vergangenheit getroffen; jemand hatte einige Referenzen (einschließlich WinForms) auf einen niedrigen Pegel Datenzugriffsanordnung hinzugefügt. Die Web-Site verwendet, um die geringen Datenzugriffsanordnung und hatte daher WinForms etc hinzugefügt, um die Datei web.config.

Die Lösung bestand darin, seinen Code in die richtige Montage zu bewegen und den falschen Verweis entfernen.

Wenn Sie sich nicht Art, wie die Anordnung, die die unerwünschten Referenzen hat und Sie wissen, dass Sie nicht Code aufrufen, die auf den unerwünschten Referenzen abhängt. Dann können Sie (keine von diesen schön sind)

  • Schreiben Sie eine benutzerdefinierte Installation Aktion, die die Beseitigung dieser unerwünschten Montage Referenzen aus der web.config
  • automatisiert
  • eine benutzerdefinierte MSBUILD Aktion schreiben dann zum Zeitpunkt des Build entfernen
  • Verwenden Sie eine andere handgeschriebene web.config-Datei, wenn die Anwendung installiert ist.

Es kann ewig dauern zu finden, wie, warum Visual Studio einen Verweis auf die Datei web.config hinzufügt. Sie müssen jede Versammlung von Hand überprüfen, die direkt oder Indirektheit von der Website verwendet wird.

Ich kenne und schätze, warum Websites von Microsoft erfunden in ASP.NET 2.0, aber manchmal einfach nur sie saugen . Wenn es sinnvoll für Sie, wandeln Sie Ihre Website in eine Web Application Project, und Probleme wie diese gehen weg.

Wenn das für Sie nicht praktikabel ist, versuchen, so viel Code wie möglich in eine separate Klassenbibliothek Projekt erneut Faktor. Alle Verweise Sie können aus der Website und in der Klassenbibliothek bewegen wird abgeholzt auf web.config Änderungen.

EDIT: Um zu klären, in einer Web-Site, die aspnet Compiler kompiliert alles (Markup-Code-behind, die Menge), so dass alle Montage Referenzen in web.config gehen müssen. Jedoch in einer Web Application Project, das C # oder VB-Compiler kompiliert die Code-Behind-Dateien in eine separate DLL, die dann durch den aspnet Compiler referenziert wird, wenn es das Markup kompiliert. In diesem Szenario Baugruppen, die sind nur in Code-Behind-Dateien referenziert wird die Code-Behind-DLL gehen und nicht berühren web.config. Nur Baugruppen, die direkt in Markup verwiesen wird in web.config gehen.

Ich glaube nicht, dass Sie Visual Studio von automatischen Hinzufügen Verweise auf Baugruppen verhindern kann, die von anderen referenziert werden.

Eine Lösung ist ein Web-Setup-Projekt mit einer benutzerdefinierten Aktion, die automatisiert zu erstellen die Entfernung dieser unerwünschten Montage Referenzen aus dem web.config.

Das sind alle Baugruppen von Ihrem Projekt erforderlich ist, in irgendeiner Form oder Herrenhaus und Hilfe der Zusammenstellung, die auf Ihren Seiten zur Laufzeit ASP.NET tut. Sie werden wahrscheinlich entweder durch Code importiert werden Sie in Ihrem Projekt oder eine andere Bibliothek verwenden, die sie verwendet wird.

Aber nach der Dokumentation . Dies sind die Baugruppen in Ihrem globalen web.config definiert, die in C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG gefunden werden kann:

<assemblies>
    <add assembly="mscorlib" />
    <add assembly="System, ..." />
    <add assembly="System.Configuration, ..." />
    <add assembly="System.Web, ..." />
    <add assembly="System.Data, ..." />
    <add assembly="System.Web.Services, ..." />
    <add assembly="System.Xml, ..." />
    <add assembly="System.Drawing, ..." />
    <add assembly="System.EnterpriseServices, ..." />
    <add assembly="System.Web.Mobile, ..." />
    <add assembly="*" />
</assemblies>

Wenn Sie dort zu suchen ist eine assembly="*" Referenz hinzugefügt werden. Und wenn Sie die Dokumentation zu diesem Befehl lesen heißt es:

  

Optional können Sie die angeben   Sternchen (*) als Platzhalter hinzuzufügen   jeder Montage innerhalb des privaten   Montage-Cache für die Anwendung,   die entweder in dem \ bin befindet   Unterverzeichnis einer Anwendung oder in   the.NET Framework-Installation   Verzeichnis   (% Systemroot% \ Microsoft.NET \ Framework \ Version).

Das bedeutet, dass jede Baugruppe in Ihrem Verzeichnis / sind oder in dem .NET Framework-Installationsverzeichnis wird bereits enthalten sein.

Was sagt mir über Ihr Problem ist, dass diese Baugruppen, die zu einem Projekt in irgendeiner Weise bereits verwiesen eingeschlossen werden. Und sie kommen wahrscheinlich aus dem Avatar Dot Net Library oder einige Steuerelemente auf Ihrer Seite. Überprüfen Sie die „Referenzen“ Ordner in Ihrem Visual Studio-Projekt auf der Avatar-Bibliothek für diese Referenzen Sie nicht wollen. Denn das ist es, wo der Build-Prozess Bibliotheken von bekommt.

Also mit anderen Worten, wenn Sie sie nicht wollen, enthalten schrubben Ihre Referenzprojekte aller Referenzen dieser Bibliotheken sein.

Alternativ können Sie MSBuild XML-Parser verwenden, diesen Abschnitt der web.config jedes Mal, wenn Sie Ihren Build-Prozess laufen zu fallen. Persönlich verwende ich eine Aufgabe genannt XmlUpdate bestimmte Teile meiner web.config zu ändern, um es bereit Produktion zu bekommen. Wenn Sie möchten, das gleiche zu tun ist es Teil der MSBuild Community-Aufgaben .

Wenn Sie auf einem Vista oder Server 08 Computer ausgeführt werden, können Sie das appcmd Befehlszeilenprogramm verwenden, um es zu entfernen nach dem Umbau anstatt manuell zu deinstallieren.

http://technet.microsoft.com/ en-us / library / cc772200 (WS.10) aspx http://learn.iis.net/page.aspx / 114 / getting-started-mit-appcmdexe /

finden Sie unter http://msdn.microsoft.com/en-us/ Bibliothek / ms178728.aspx

da ist es zu erklären, dass Sie, was in Eigenschaftsseite zu sehen ist nicht alles, existieren implizite Referenzen auch in Machine.config-Datei und werden bei der Kompilierung hinzugefügt. Hoffe, das hilft.

I, indem Sie den „using“ statments im Code-Dateien sowie alle Referenzen in Ihrer ASPX, ASCX-Dateien starten würde. Es klingt wie Sie einige davon verwiesen haben (ich weiß, dass einige von Standard aus den Artikel-Vorlagen hinzufügen Neu hinzugefügt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top