Also im Grunde haben wir eine starke Namen (stark signiert) Assembly x.dll, die von einer unserer Komponenten, App.exe verwendet wird. Die Signaturschlüssel der Montage in unserem Repository ist, und es wird die Montage durch das Schreiben unterzeichnetAssembly muss bei jeder Änderung der Benutzer-App in GAC neu implementiert werden
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFileAttribute(@"..\..\xxx.snk")]
[assembly: AssemblyKeyName("")]
Die Montage soll durch ein Installateur in GAC zu setzen, die gemeinsame Pakete installiert, lassen Sie uns nennen es common.msi . Aber unsere Komponente selbst wird von App.msi installiert. Wenn es zusammen eingesetzt wird, funktioniert alles. Wenn jedoch Änderungen an App.msi vorgenommen werden, die ABSOLUT NICHT mit x.dll zu tun haben, und App.msi erneut bereitgestellt wird, findet App.exe die Datei x.dll nicht. Beachten Sie, dass keine Änderungen an x.dll vorgenommen werden. Wenn jedoch common.msi ebenfalls bereitgestellt wird, funktioniert alles. Also ich vermute, dass es ein Problem mit Build-Versionen oder etwas geben muss, oder manifestiert, von denen ich nichts weiß. Ist etwas offensichtlich, dass ich falsch mache? Ist es nicht möglich, die Assembly separat bereitzustellen und nicht zu berühren, wenn sie nicht geändert wird, und sie nicht jedes Mal erneut bereitzustellen, wenn eine Komponente, die sie verwendet, geändert wird? Vielen Dank.
Edit: Es ist eine Anforderung (ein ich nichts tun kann), dass die ssembly in GAC
Das ist eine Anforderung, ich kann es nicht ändern. Es wird angenommen, dass die Baugruppe auch von anderen Komponenten verwendet wird. Und Ihre Antwort beantwortet nichts, leider –
"Von anderen Komponenten verwendet" ist kein gültiger Grund für die Installation in den GAC. Du machst es falsch! – Cheeso
Eine Komponente muss nicht im GAC enthalten sein, um von anderen Komponenten verwendet zu werden. Es muss nur im selben Verzeichnis sein. – Femaref