2009-05-13 6 views

Antwort

1

Es sollte genug sein, um sie in den Papierkorb/Ordner zu legen.

Habe vor ein paar Wochen so etwas gemacht, eine Testversion für eine Charting-Engine heruntergeladen, die .dlls in meinen lib-Ordner gestellt und in meinem Webprojekt einen Verweis hinzugefügt.

Wir verwendeten die "Veröffentlichen" -Option in Visual Studio, als wir eine Website implementierten, sodass wir einen netten, sauberen Build zum Hochladen bekamen (jetzt haben wir einen Build-Server).

Das alles funktionierte perfekt, bis wir beschlossen, die Komponente zu kaufen, ich installierte es und fügte alle Baugruppen, die wir verschoben/installiert haben, in den GAC. Ich nahm die Assemblys und legte sie in unseren lib-Ordner und fügte die Referenzen wieder hinzu.

Alles funktioniert gut, bis wir beschlossen haben, ein Update für das Projekt mit den neuen Chart-Engine-Assemblys zu veröffentlichen. Die Seite hat aufgehört zu arbeiten! :(

Nach einer kurzen Zeit des Debugging stellten wir fest, dass der Fehler die neuen .dlls für die Diagramm-Engines waren, die nicht in den bin-Ordner ausgegeben wurden, da sie in der GAC waren ‚re gibt es nicht, so das Problem zu beheben wir kopierten sie einfach immer und alles funktionierte wie ein Zauber wieder

1

aus der Code Contracts-Website in Frage verknüpft.

Verträge als aufgegebene Dokumentation handeln Ihrer externen und internen APIs Die Verträge werden verwendet, um Tests über ru zu verbessern ntime checking, aktivieren Sie statische Vertragsprüfung und Dokumentation Generation.

Korrigieren Sie mich, wenn ich falsch liege, aber ich denke, dass Code-Verträge nur als Entwicklungshilfe gedacht sind. Daher wird davon ausgegangen, dass Sie sie deaktivieren, wenn Sie die für die Bereitstellung/Produktion vorgesehenen Assemblys kompilieren.

1

Ich weiß, das ist ein älterer Thread aber die Frage ist immer noch ein gültiger ...

Unter der Annahme, sind die Verwendung von .NET 4.0, die System.Diagnostics.Contract Klassen bereits in mscorlib.dll enthalten. Alles, was Sie irgendwo installiert haben müssen, ist die .NET 4.0-Laufzeitumgebung.

Sie müssen nur die CodeContracts Paket an die Entwickler Maschinen installiert haben und alle anderen Maschinen, die Ihre Binärdateien nach unten zu IL kompilieren (das heißt über Visual Studio, msbuild csc.exe mit - den C# -Compiler, etc.). Das Installationspaket enthält mehrere .exes. Einer von ihnen ist "ccrewrite.exe". Dies ist ein IL-Rewriter, der IL-Code in Ihre Assemblys einfügt nach der Compiler wurde abgeschlossen. Beachten Sie, dass ccrewrite und der .NET-Compiler, den Sie für die von Ihnen verwendete Sprache verwenden, nicht sind, verbunden sind oder alle Abhängigkeiten teilen.

Sobald Ihre Binärdateien kompiliert sind, müssen Sie nichts auf den Servern installieren oder bereitstellen, auf denen der Code ausgeführt wird. Dies gilt unabhängig der Optionen, die Sie in Ihrem Projekteinstellungen konfiguriert haben:

  • mit Runtime Contract
  • mit Static Vertrag prüfen
  • konfiguriert Überprüfung der CodeContract Reference Assemblies zu bauen (die Sie nicht brauchen um diese entweder zu implementieren).
  • usw.

Die CodeContract Reference Assemblies nur verwendet werden, wenn Sie Ihre Aufträge an eine Bibliothek/API aussetzen müssen, die außerhalb Ihrer Lösung ist und statische Überprüfung wird für das Projekt freigegeben. Sie sollten auch nicht direkt auf sie verweisen, noch benötigen Sie irgendeine Art von Post-Build-Schritt, um sie in einen beliebigen bin-Ordner zu kopieren (außer in dem Fall, den ich gerade erwähnte, um sie einer anderen Bibliothek/API auszusetzen).

HTH

Verwandte Themen