Autor Beitrag
study
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 18.02.10 16:29 
Hallo zusammen,
ich bin relativ neu in der Programmiersprache C# und in der Nutzung von Visual Studio. Ich habe momentan ein Problem, an dem ich schon lang kämpfe und komme einfach nicht weiter. Ich habe es auch schon in einem anderen Forum versucht. Allerdings komme ich dort mit meinen nicht vorhandenen Kentnissen nicht weiter.

Folgende Situation:
Ich soll einen Windows-Applikation, die in C# geschrieben ist, erweitern. Der Aufbau ist prinzipiell so, dass in der Solution viele kleine Projekte enthalten sind. Die Produkte (also in dem Fall die DLLs) sollen alle in das Verzeichnis _Products gelegt werden. In den einzelnen Projekten gibt es viele Verlnkungen auf die DLLs in dem _Products-Verzeichnis. Soll heißen, man muss das Programm beim Ersten Buildvorgang zweimal bauen. Beim ersten Mal werden die DLLs erstellt und in das _Products Verzeichnis gelegt. Beim zweiten Buildvorgang sind dann die ganzen Verlinkungen vorhanden und der Build läuft durch.

Soweit die Theorie:
Bei meinem Kollegen funktioniert das alles auch genauso. Bei allerdings findet er die meisten Verlinkungen nicht und bricht den Buildvorgang mit vielen Fehlern ab. Die meisten Fehler sind " error CS0246: The type or namespace name 'xxx' could not be found (are you missing a using directive or an assembly reference?)".
Mein Kollege und ich holen den Code beiden aus dem gleichen Versionsmanagment -Tool. Somit ist also sichergestellt, dass die Sourcen wirklich identisch sind.

Meiner Meinung, muss dass an irgendwelchen Einstellungen im Visual Studio oder im .Net liegen, oder?
Was meint Ihr dazu?
Wäre über hilfe wirklich sehr dankbar. Bin schon echt am Verzweifeln.
Hoffe, dass Ihr in Euren Antworten Rücksicht darauf nehmt, dass Ihr es noch nicht mit einem C#-Profi zu tun habt (eher das Gegenteil).
Danke im Voraus
stud
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 18.02.10 16:44 
Habt ihr die Buildreihenfolge richtig eingestellt? Dann ist es eigentlich nicht nötig, 2x zu bauen.
Bei VS 2008 Rechtklick auf die Projektmappe -> Projektbuildreihenfolge

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
study Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 18.02.10 16:48 
Ja, die Buildreihenfolge ist bei mir und meinem Kollegen identisch.
Gruß study
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 18.02.10 16:52 
Dann mal schauen in Projekt -> xx-Eigenschaften -> Verweise -> Verweispfade

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
study Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 18.02.10 16:54 
Ein Punkt habe ich noch vergessen:
Wenn ich den Code, den mein Kollege gebaut hat, auf meinen Rechner kopiere, funktioniert alles sauber und der Buildvorgang läuft sauber durch.
Auch wenn ich den _Products Ordner lösche und erneut baue, funktioniert es ohne Probleme.
Wenn ich allerdings einen Rebuild mache, kommen wieder alles identischen Fehler, wie wenn ich den Code selbst aus dem Versionmanagement gesynct hätte.

Ich verstehs es einfach nicht.
study Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 18.02.10 16:56 
Bei den Verweispfaden ist alles leer und nichts eingetragen.
muss ich dort dann den Verweis auf den _Product Ordner eintragen?

Allerdings verstehe ich dann nicht, warum es bei meinem Kollegen funktioniert, bei dem auch alles leer ist.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 18.02.10 17:23 
user profile iconstudy hat folgendes geschrieben Zum zitierten Posting springen:
Die Produkte (also in dem Fall die DLLs) sollen alle in das Verzeichnis _Products gelegt werden. In den einzelnen Projekten gibt es viele Verlnkungen auf die DLLs in dem _Products-Verzeichnis.
Weshalb so kompliziert :eyecrazy: ? Projektreferenzen wurden erfunden, um genau solche Probleme zu umgehen.

Ansonsten musst du eben Schritt für Schritt debuggen:
In welcher Assembly ist die Klasse, die er nicht findet?
Ist die Assembly im _Products-Ordner?
Wird sie wirklich referenziert ("Output"-Fenster -> "Build")?

_________________
>λ=
study Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 18.02.10 17:31 
Ja ich weiss, dass das kompliziert ist. Allerdings ist das die Vorgabe, die ich nicht ändern kann.

Ich habe jetzt mal angefangen, das erste Projekt zu bauen.
Hier bekomme ich gleich einen Fehler: "error CS1577: Assembly generation failed -- Referenced assembly 'XXXLib' does not have a strong name".
Sorry, damit kann ich nichts anfangen.
c#surfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 42
Erhaltene Danke: 2



BeitragVerfasst: Do 18.02.10 17:40 
"error CS1577: Assembly generation failed -- Referenced assembly 'XXXLib' does not have a strong name" bedeutet, dass eine signierte assembly erwartet wird - die Doku ist dein Freund..
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 18.02.10 17:45 
user profile iconstudy hat folgendes geschrieben Zum zitierten Posting springen:
Hier bekomme ich gleich einen Fehler: "error CS1577: Assembly generation failed -- Referenced assembly 'XXXLib' does not have a strong name".
Sorry, damit kann ich nichts anfangen.
Ist denn die zu kompilierende Assembly signiert (Projekteigenschaften -> Signierung)? Entweder müssen alle Assemblies signiert sein oder keine.

_________________
>λ=
study Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Do 18.02.10 17:48 
Ja, es ist signiert, wie alle anderen auch.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 18.02.10 17:56 
user profile iconstudy hat folgendes geschrieben Zum zitierten Posting springen:
wie alle anderen auch.
Äh, dann würde wohl kaum der Fehler kommen. Schau mal im Reflector oder mit sn.exe -T nach, ob XXXLib wirklich einen starken Namen hat.

_________________
>λ=
study Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 23.02.10 10:23 
Hallo,
ich melde mich nochmals. Ich bin etwas weitergekommen, habe nun deutlich weniger Fehlermeldungen. Meine Schritte wollte ich hier zur Diskussion stellen und vielleicht könnt ihr mir noch weiterhelfen. Also folgendes habe ich gemacht:
Ich habe die verwendeten Assemblys in den Global Assembly Cache (GAC) geschrieben. Hierfür habe ich ein neues Install-Projekt erstellt, das gebaute exe-File von meinem Kollegen eingebunden und alle angezogenen DLLs in den GAC verschoben.
Anschließend kompiliert und installiert.
Ergebnis ist, dass ich nun deutlich weniger Fehlermeldungen habe.

Trotzdem gibt es nachwievor Fehlermeldungen, dass er einige DLLs nicht finden kann.
Ich habe also in meine Install-Projekt die entsprechenden DLLs noch hinzugefügt.
Nun bekomme ich folgende Fehlermeldung:
"Assembly xxx.dll must have a shared name to be installed globally".

Sorry, könnt Ihr mir hier vielleicht auch noch weiterhelfen?

Danke im Voraus für Eure Antworten.

Gruß study
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 23.02.10 12:15 
study Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Di 23.02.10 12:43 
Genau das habe ich ja bereits gemacht.
Nur fehlen immer noch DLLs. Wenn ich nun diese ebenfalls in den GAC einbinden möchte, bekomme ich die Fehlermeldung "Assembly AssemblyName must have a shared name to be installed globally".
Und hier weiss ich jetzt nicht weiter.

Gruß study