2011-01-11 3 views
1

J'ai quelques solutions.La référence de projet ajoutée à l'un des projets dans la même solution apparaît brisée dans une autre solution

Dans la première solution j'ai beaucoup de projets. Un des projets nommés 'A' a une référence de projet d'un autre projet 'B' de la même solution.

Dans la deuxième solution, le projet 'A' est ajouté mais pas le projet 'B'.

Les deux solutions se sont générées avec succès.

Cependant, dans la deuxième solution, référence de B ajouté dans le projet A, apparaît cassé.

Pourquoi?

Maintenant, dans la première solution, au lieu d'ajouter une référence projet de B en A, ajouter un « fichier de référence » de DLL B simplement (qui est copié dans le répertoire de sortie commun créé pour tous les projets) en A Maintenant, la référence semble cassée à la fois dans la solution et la première solution ne se construit pas avec succès.

Puis-je savoir ce que je dois faire lorsque j'ai un tel scénario?

EDIT: J'examiné le dossier du projet du projet A et a constaté que le chemin (<ProjectReference Include = "..\B\B.csproj" /> attribut) pour référence du projet de B, est le chemin relatif. (comme ".. \ B \ B.csproj"). Je suppose que c'est la raison pour laquelle cette référence semble cassée dans le second assemblage car l'assemblage B ne fait pas partie de la deuxième solution et évidemment 'B.csproj' n'est pas disponible lors de la résolution de la référence en utilisant le chemin relatif.

Répondre

1

Il y a deux façons de faire référence à la sortie d'un projet:

  1. Référencer l'assembly compilé (le fichier .dll)
  2. Référencer le projet lui-même, impliquant que vous avez besoin de la sortie de la compilation

Le premier scénario est utilisé lorsque vous n'avez pas le projet qui crée cet assembly dans le cadre o f votre solution.Typiquement, ceci est utilisé pour référencer des assemblées provenant de tierces parties, ou qui ne changent pas si souvent.

Le deuxième scénario nécessite que le projet que vous référencez soit présent dans la solution.

Il semble que vous ayez mélangé les références, créant une référence de projet à un projet qui ne fait pas partie de la solution. Cela ne fonctionne pas.

+0

Oui, ce que vous avez dit est correct. J'ai mélangé les références. Cependant, cela ne semble pas être le seul problème. J'étudie toujours et il semble que ce problème pourrait également être avec mes actions de construction automatisées qui construisent des solutions via un script. Merci pour votre réponse. – Learner

+0

Le problème est résolu en supprimant le projet A de la deuxième solution et au lieu d'ajouter 'référence de projet' à A, j'ai ajouté une référence à sa DLL conservée à l'emplacement partagé. En outre, sur tous les projets requis, j'ai dû écrire un événement post-construction pour copier les DLL de \ bin \ Debug vers le dossier partagé d'où j'ajoute des références. – Learner

1

Dans la première solution, vous avez ajouté "B" en tant que "référence de projet" au projet "A". Maintenant, quand vous avez ajouté le projet "A" à la deuxième solution, il a cherché "projet B" dans la deuxième solution (puisqu'il s'agit d'un "Project Reference"), il ne pouvait pas le trouver, évidemment, donc un avertissement. En exécution, cependant, le projet "A" sait où trouver la sortie du projet B, donc les références seront resoulved et vous ne devriez pas avoir un problème à l'exécution. (et c'est pourquoi les deux solutions se construisent avec succès)

Pour le second scénario (en ajoutant une référence à la DLL de B directement), cela a très bien fonctionné pour moi. Lorsque vous dites "ajouter une référence de fichier", je suppose que vous voulez ajouter une référence à la DLL directement (cliquez avec le bouton droit sur Références-> Ajouter une référence-> Assemblies-> browse-> B.dll), ou y a-t-il un autre chemin que je ne sais pas? : De

Hope cela a aidé :)

+0

Merci pour votre réponse. Je suis toujours en train d'enquêter puisque le problème ne semble pas être avec les références ... Le problème pourrait être avec la construction continue automatisée de solutions les unes après les autres ...... – Learner

Questions connexes