Mir ist aufgefallen, dass ich bei einem Projekt keine Unit Tests nutzen kann, weil diese auf Internals von einer Assembly zugreifen müssen:
[assembly: InternalsVisibleTo("Tester")]
->
error CS1726: Friend assembly reference 'Tester' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations.
Ok. Verwirrung ist bei mir groß. Das heißt doch, die Anwendung ist strong named. Oder?
Ich hab die betroffene Executable ohne das Internals gebaut und mal mit sn.exe gecheckt:
$ sn.exe -T app.exe
app.exe does not represent a strongly named assembly
Öh? Was? In den Settings ist bei der Anwendung das Sign Assembly auch deaktiviert.
Wie kommt .net auf die idee, dass es strong-named ist?
Dann hab ich die AssemblyInfo.cs genauer angeguckt, ganz unten steht noch ein Block:
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]
Aber was bedeutet das? Heißt das, dass kein Strong-name erzeugt wird, oder ist das ein Artefakt von .net 2.0 und bewirkt, dass ich keinen Key haben, aber dennoch strong-named bin???
App.exe (nicht von mir) wird mit VS 2008 und Framework 2.0 kompiliert, mein Tester mit 3.5.
Life is a short
Hallo,
der Strong-Name kann entweder durch das AssemblyKeyFileAttribute oder die Compileroption /keyfile gesetzt. Letzteres ist in VS auch über die Projekteigenscahften möglich.
Das Problem liegt jedoch darin dass beim InternalsVisibleTo auch der Public Key der "Friend"-Assembly angegeben werden muss. Siehe dazu das Beispiel in der Doku.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Das mit dem Public Key ist aber nur nötig, wenn strong-named Assemblies im Spiel sind, oder? Und ich sehe nicht, wo das der Fall sein soll.
Die Anwendung hat kein /key und signiert sicht meiner Meinung nach ja auch nicht, das hab ich durch sn.exe gecheckt.
Das heißt es sollte garkein Public Key geben
Life is a short
Hallo,
laut Fehlermeldung müsste 'Tester' einen Strong-Name haben.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Ne, ist auch nicht strong named.
Wie gesagt, wenn ich diesen AssemblyKey Block aus der App rausnehme, dann meckert er ja nicht mehr
Life is a short