webentwicklung-frage-antwort-db.com.de

Wie wird die license.licx-Datei verwendet?

Ich habe die Datei license.licx, die in einer meiner Projekteigenschaften enthalten ist. Ich bin nicht sicher, wie das von seinen DLLs verwendet wird. Wird es von msbuild verwendet? Haben Sie eine Idee, wie es verwendet wird, wenn die Lösung erstellt wird?

42
CharithJ

Licenses.licx Datei leidet

Datei dies unter ASP.NET, Abteilung von WTF.

Frustration Wenn Sie eine Webanwendung mit unserem .__ entwickeln. Steuerelemente wird eine mysteriöse Datei mit dem Namen license.licx angezeigt. Nein, ist es nicht ein Befehl, einen Lollipop mit einem ungewöhnlichen Namen zu verwenden, ist jedoch eine Übergangsdatei generiert (und geändert) von Visual Studio, das an der Lizenz beteiligt ist Überprüfung. Im Entwurfsmodus verwendet Visual Studio diese Datei zum Erstellen einer Notiz von jedem lizenzierten Steuerelement, das Sie in Ihrem Design verwenden. Wenn Sie dann bauen Ihre Anwendung, Visual Studio, las diese Datei license.licx und für Jede dort erwähnte Steuerung lädt die entsprechende Assembly und führt sie aus den Lizenzcode in dieser Assembly, um festzustellen, ob die Assembly richtig ist lizenziert (das heißt, das Produkt, zu dem es gehört, wurde ordnungsgemäß auf diesem Computer installiert.). Wenn alles auscheckt, wird Visual. Studio bettet den Lizenzschlüssel in die ausführbare Datei ein. Wenn nicht, Sie erhalten seltsame Fehlermeldungen, dass das Steuerelement nicht lizenziert ist (Mein Favorit ist "Lizenzdateien 'license.licx' konnte nicht in eine binäre Ressource umgewandelt werden.", in der ich normalerweise die bunte Sprache meiner Vorfahren aufrufe).

Licenses.licx ist tatsächlich eine Datei in Ihrer Projektmappe (wenn Sie dort nicht Sehen können, klicken Sie auf Alle Dateien anzeigen). Visual Studio verwendet ein Programm namens lc.exe, um die Lizenzen in eingebettete Ressourcen in Ihrem .__ zu kompilieren. Anwendung, und wenn bei der Lizenzierung Probleme auftreten, habe ich Gesehene Fehlermeldungen, die auf diese ausführbare Datei verweisen.

Hier ist ein Beispiel für eine Zeile in einer Lizenz.licx-Datei.

DevExpress.XtraCharts.Web.WebChartControl, DevExpress.XtraCharts.v8.2.Web, Version = 8.2.4.0, Kultur = neutral, PublicKeyToken = 9b171c9fd64da1d1

Der erste Wert in dieser durch Kommas getrennten Liste ist die Klasse, der zweite ist die Assembly, in der sie gefunden wurde, und die anderen Werte sind der Rest von der starke Name der Versammlung. Ich bin sicher, dass Sie Probleme bereits sehen können. insbesondere, wenn Sie eine Lösung auf die neuesten Versionen von .__ aktualisieren. Steuerelemente von Drittanbietern, die Sie verwenden. Wenn Sie möchten, können Sie diese Datei und .__ bearbeiten. Entfernen Sie die starken Namensteile ohne Probleme.

Aber das ist nicht das größte Problem mit Lizenzen.licx. Die Sache ist Wenn Sie die .__-Datei öffnen, neigt Visual Studio dazu, diese Datei zu berühren. Lösung (das ist "berührend" wie beim Ändern des Dateidatums in aktuelles Datum/Uhrzeit). Dies spielt Chaos mit der Lizenzierung, vor allem wenn Sie Öffnen Sie die Lösung auf einem nicht lizenzierten Computer, und Sie verwenden Quellcodeverwaltung. Plötzlich wirft Ihre Build-Maschine diese Nachrichten können nicht transformiert werden, und Sie fragen sich, was falsch gelaufen ist. Ein anderes weit verbreitetes Problem ist, wenn ein Team von Entwicklern arbeitet eine Lösung: Sie "verändern" alle diese Datei unbewusst.

Die Antwort scheint also zu sein, die Datei license.licx nicht unter .__ abzulegen. Quellcodeverwaltung. (KB-Artikel)

Aber diese Lösung für das Problem wirft eine weitere rote Flagge: Wenn einer von Die Entwickler in einem Team fügen ein neues Steuerelement hinzu, das lizenziert werden muss. Im Formular wird eine Zeile zu seiner lokalen Lizenz.licx-Datei hinzugefügt, und es kann nicht in der Quellcodeverwaltung reflektiert werden. Bam, Ihre Build-Maschine schlägt die build und Joe, der die Kontrolle hinzugefügt hat, muss Donuts für die .__ kaufen. Team, bis jemand anderes den Build bricht.

Ich fürchte, ich habe keine gute Lösung für diese letzte Frage, weil Leider scheint das "nicht Lizenzen.licx in Quellcodeverwaltung zu setzen" so zu sein, dass jeder das Lizenzproblem löst. Ein weiterer Lösung ist, die Lizenzen.licx-Datei insgesamt zu löschen und dann .__ zu erhalten. Visual Studio zum Wiederherstellen durch Öffnen der Lösung (obwohl dies .__ auf einem Build-Computer etwas schwierig ist).

Wie auch immer, hoffe, dass alles irgendwie hilft. Und mit .__ auf deinen Laptop schlagen. ein Telefon wird nicht wirklich helfen.

15
CharithJ

Da Sie angeben, dass StellarElevens Antwort nicht hilft, schätze ich, dass Sie nach etwas noch Einfacherem suchen. Dies ist wahrscheinlich nicht zu 100% korrekt, aber ich verstehe, wie das funktioniert:

Die licx-Datei ist einfach eine Liste der von Ihrer Anwendung verwendeten "lizenzierten" Komponenten.

Jede Zeile in der Datei hat das folgende Format:

[Component Name], [Assembly Name]

Zum Beispiel verwendet eines meiner Projekte die lizenzierte IP Works NetDial-Komponente, sodass meine .licx-Datei die folgende Zeile enthält:

nsoftware.IPWorks.Netdial, nsoftware.IPWorks

Im Kontext der Projektdatei (.csproj) wird auf die .licx-Datei als EmbeddedResource verwiesen. Während des Erstellungsprozesses überprüft LC.exe , dass der Computer, der den Build ausführt, über die entsprechenden Lizenzen für die betreffende Komponente verfügt und eine binäre .licenses-Datei generiert, die schließlich als Ressource eingebettet wird ([AssemblyName] .exe.licenses) in der endgültigen ausführbaren Datei.

Hilft das?

28

Wir verwenden eine benutzerdefinierte Eincheckrichtlinie (TFS), die den Inhalt dieser Option explizit auf null setzt, sofern sie in der Eincheckliste vorhanden ist.

0
Miki