Hi

Actually I've a circular dependencie. Following is very strange

The error does not appear if you compile your working tree. It only appears if you commit the sources, run a checkout into a new working branch and run a nant generateSolution. And the next problem ist: generateSolutionNoCompile fails too.

So I suggest to find a possibility

a) to check thoose circular reference problems a litte bit more easier.
b) to implement a generateSolutionNoCompileNoCircularDependencyChecks

It would be a nice idea to handle those problems with something less trouble than now. Sorry but I really need project files and I really need an error message during the compilation process.

Best regards
Wolfgang

Hi Wolfgang,

wolfganguhr wrote

The error does not appear if you compile your working tree.

This depends how you compiled your working tree. If you ran nant compile, you would get the same error message. If you compile from the existing project files in SharpDevelop, then it could compile, if one the affected assembly of the circular dependency is already compiled.

If you have a circular dependency, then nant / project files are not able to do anything anymore: They do not know, what to compile first and what later, because they are not able to fulfill the dependencies anymore!

wolfganguhr wrote

So I suggest to find a possibility

a) to check thoose circular reference problems a litte bit more easier.

The error message from nant is very detailed: It shows the complete circular of dependency of the assemblies. By this you have all informations, you could get for breaking the dependency again. Okay, it do not show the source files involved. I normally found the affected files by text search quickly or by looking into the delivery\nsMap*.namespace. They map the namespace to the corresponding assembly.
Instead of investing time into a tool, showing you the affected source files, I would invest the money in clarifying our architecture, so that is is clear, what depends on what and preventing circular dependencies at all.

wolfganguhr wrote

b) to implement a generateSolutionNoCompileNoCircularDependencyChecks

As I already tried to explain above: I know of no way to implement such a target. The circular dependency is checked by nant because of the dependencies between the assemblies (directories) and nant does not know, in which order he could execute the different targets. Same would be true for project files, with all the dependencies defined.

ThiasG

In a phone session this morning, we found this solution to the problem:
When we as developers add references to another dll manually, we need to make sure we add the reference to the referenced project, not to the dll of the referenced project.
That way, a circular dependancy will appear in SharpDevelop as well immediately, and we don't need to wait until we run nant generateSolution.