2012-04-15 7 views
0

Wir haben eine Reihe von Beispiel-ASP.NET-Anwendungen. Ich würde lieber nicht die DLLs in jedem Ordner in den Bin-Ordner kopieren, da dann alle Dateien bei einer Änderung aktualisiert werden müssen.Gibt es eine Möglichkeit, eine ASP.NET-Anwendung auf Referenzen zu verweisen, anstatt sie in den Ordner "Bin" zu kopieren?

Gibt es eine Möglichkeit, die ASP.NET App auf die Referenzen zu verweisen, wie sie mit einer Forms oder Befehlszeilen-App durchgeführt werden können?

Update: Um die Fragen unten zu beantworten, lassen Sie mich ein bisschen besser erklären, was die Situation hier ist. Wir haben ein kommerzielles Produkt, das aus einer Reihe von DLLs besteht. Wir stellen eine Reihe von Beispielanwendungen zur Verfügung, einschließlich ASP.NET Apps. All dies, unsere Produkt-DLLs und unsere Beispielquelle, werden auf dem Computer eines Benutzers installiert.

Wenn sie eine der Samples kompilieren wollen, wollen wir, dass das Sample die Version der installierten DLLs verwendet. Der Installationsprozess hat in GAC als Standardoption Platz, aber der Benutzer kann das deaktivieren, wenn er die DLLs nicht im GAC haben möchte. In diesem Fall müssen wir auf die DLLs zugreifen, in denen sie installiert wurden, oder sie in jedes Bin-Verzeichnis kopieren .

+0

Verwenden Sie Quellcodeverwaltung? – IrishChieftain

+0

Können Sie die Beispielanwendung in Ihrer Lösung hinzufügen? Auf diese Weise erhält das neu hinzugefügte Projekt den Verweis auf das existierende Projekt ('Using Add project Reference'). – Pankaj

+0

Vielleicht verstehe ich das nicht vollständig .... Wäre das nicht das "gewünschte" Ergebnis - wenn die Assemblies aktualisiert/repariert werden, sollte die App nicht von ihnen wissen? Verweisen Sie auf die DLLs oder die Projekte? Wenn Sie einen "Code Freeze" möchten, dann entfernen Sie das/die Beispielprojekt (e) aus der Lösung (?) – EdSF

Antwort

2

Um einen Verweis hinzuzufügen, klicken Sie mit der rechten Maustaste auf den Ordner bin im Visual Studio und Sie finden dort die Referenzoption hinzufügen.

1

Die Frage ist klar, aber der Hintergrund ist nicht.

Es macht für mich keinen Sinn, ein paar Anwendungen zu haben, die alle dieselbe Anwendungs-DLL verwenden. Ist es nur eine Bibliothek, die von allen Anwendungen verwendet wird?

Es gibt einige Optionen, je nachdem, was Sie haben und was Sie brauchen:

1. Add Referenz direkt

Wenn Sie wirklich nur einen Verweis hinzufügen möchten, rechtsklicken Sie auf „Referenzen“ in Ihrem VS-Projekt und wählen Sie "Referenz hinzufügen". Wählen Sie die Referenz und klicken Sie auf OK. Klicken Sie anschließend mit der rechten Maustaste auf die hinzugefügte Referenz, wählen Sie "Eigenschaften" und setzen Sie "lokale Kopie" auf "false", sodass sie nicht in den bin-Ordner kopiert wird.

Vielleicht sind die Optionsnamen ein bisschen anders, aber ich habe jetzt keinen englischen VS. Sollte fast sein, was Sie tun müssen.

EDIT

In diesem Fenster "lokale Kopie" auf "false" gesetzt (hier als "Lokale Kopie" gezeigt, sorry, es ist Deutsch).

set local copy

2. Put-DLLs in GAC

Wenn Sie eine gemeinsame Code-Bibliothek für ein paar Anwendungen, die auf demselben Server haben Sie setzen, dass die Bibliothek in die GAC denken können.

3.e Probleme mit der Quellcodeverwaltung

Wie aus IrishChieftain erwähnen Sie vielleicht Quellcodeverwaltung verwenden und wollen nicht jedes Mal der DLLs im Ordner ist zu aktualisieren. Die Lösung dafür wäre, nur den bin-Ordner in Ihrer Quellcodeverwaltung zu ignorieren.

+0

Hi; Ich finde es nicht. Ich kann Add Reference hinzufügen und es kopiert die DLL in mein Bin-Verzeichnis. Aber ein RMB gibt mir keine festgelegte lokale Kopiereigenschaft. Nicht im Eigenschaftenfenster, auch nicht dafür. Gibt es noch etwas anderes, was ich tun muss, um diese Option zu bekommen? Danke - dave –

+0

Hm, ich weiß nicht, es sollte da sein. Ich habe ein Bild von meiner Immobilienansicht hinzugefügt, welche Möglichkeiten hast du da? – Marc

1

Sie konnten keine Referenzen hinzufügen Sie möchten das Kontextmenü auf dem Knoten Verweise des Projekts mit: enter image description here

Im Dialog klicken Sie auf ‚Verweis hinzufügen‘ auf der Registerkarte Durchsuchen und Sie können suchen und hinzufügen alle externen Referenzen, die Sie benötigen. Für gewöhnliche Assemblys setzen wir sie normalerweise an einem gemeinsamen Ort im Dateisystem an und verweisen sie dann von diesem Ort aus, wann immer es notwendig ist.

0

Es gibt Situationen, in denen Sie bestimmte Baugruppen nicht zur Entwurfszeit referenzieren möchten. Es gibt eine Möglichkeit, diese auf der Grundlage der Logik zur Laufzeit mit dem Ereignishandler AppDomain.AssemblyResolve zu laden. Wenn Sie Assemblys verwenden, auf die Sie über eine Abstraktionsebene verweisen können und die Sie nicht direkt referenzieren möchten, können Sie das folgende Muster verwenden, um sie wegzulassen und einen Algorithmus zur Laufzeit auszuführen, um die Assembly zur AppDomain zu suchen und dann hinzuzufügen.

Dieses ein Ausschnitt ist, dass ich in der global.asax setzen, Application_Start Handler:

public class Global : System.Web.HttpApplication 
{ 

    protected void Application_Start(object sender, EventArgs e) 
    { 
     AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); 
    } 

    System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) 
    { 
     // use this space to add logic to find your assemblies 

     return null; // will throw a Dependency-related exception 
    } 

Lassen Sie mich wissen, ob es irgendwelche Fragen gibt, oder wenn ich den Punkt Ihrer Frage fehle.

-G

Verwandte Themen