Large scale C# development

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Ivan Krivyakov

    Large scale C# development

    Let's say I have a big system with several dozen C# projects - some
    of them class libraries, some of them applications. Executables and
    libraries from higher layers depend on libraries from lower layers.

    The system usualy has two builds: debug build and release build.
    Debug libraries and executables depend on other debug libraries,
    and release libraries and executables depend on release libraries.

    The question is: how do I accomplish this without building one huge
    solution file with a lot of projects?

    As far as I understand, for each C# project I must specify its
    references.

    There are two type of references - regular references and project references.
    Regular references can reference only a single DLL. There is no way to
    distinguish between Debug and Release. Project references behave the
    way I want - Debug build will reference Debug library, and Release build
    will reference Release library, but they assume target project is in the
    same solution as my current project.

    Thus, if I want to use project references, it will lead to a huge .sln file
    with dozens of projects in it. Such file is very difficult to work with, because
    of speed and memory problems.

    In C++ world we solved this problem by creating smaller solution files
    with just a couple of projects in each, and handling overall system dependencies
    in a makefile, that invoked compilation of individual solutions.

    But in C# I cannot do it because of project references.

    What method to you use for your large-scale C# system?

    Thanks in advance,
    Ivan Krivyakov


  • Randy A. Ynchausti

    #2
    Re: Large scale C# development

    Ivan,
    [color=blue]
    > As far as I understand, for each C# project I must specify its
    > references.[/color]

    Build "smaller" assemblies and install them in the GAC.

    Regards,

    Randy


    Comment

    • Yura2000

      #3
      Large scale C# development

      You may use kind of setup project called ReferenceCollec tor
      (for instance).
      All what he will do - compile needed DLLs ant output them
      into defined place - same place for all developers.[color=blue]
      >-----Original Message-----
      >Let's say I have a big system with several dozen C#[/color]
      projects - some[color=blue]
      >of them class libraries, some of them applications.[/color]
      Executables and[color=blue]
      >libraries from higher layers depend on libraries from[/color]
      lower layers.[color=blue]
      >
      >The system usualy has two builds: debug build and release[/color]
      build.[color=blue]
      >Debug libraries and executables depend on other debug[/color]
      libraries,[color=blue]
      >and release libraries and executables depend on release[/color]
      libraries.[color=blue]
      >
      >The question is: how do I accomplish this without[/color]
      building one huge[color=blue]
      >solution file with a lot of projects?
      >
      >As far as I understand, for each C# project I must[/color]
      specify its[color=blue]
      >references.
      >
      >There are two type of references - regular references and[/color]
      project references.[color=blue]
      >Regular references can reference only a single DLL. There[/color]
      is no way to[color=blue]
      >distinguish between Debug and Release. Project references[/color]
      behave the[color=blue]
      >way I want - Debug build will reference Debug library,[/color]
      and Release build[color=blue]
      >will reference Release library, but they assume target[/color]
      project is in the[color=blue]
      >same solution as my current project.
      >
      >Thus, if I want to use project references, it will lead[/color]
      to a huge .sln file[color=blue]
      >with dozens of projects in it. Such file is very[/color]
      difficult to work with, because[color=blue]
      >of speed and memory problems.
      >
      >In C++ world we solved this problem by creating smaller[/color]
      solution files[color=blue]
      >with just a couple of projects in each, and handling[/color]
      overall system dependencies[color=blue]
      >in a makefile, that invoked compilation of individual[/color]
      solutions.[color=blue]
      >
      >But in C# I cannot do it because of project references.
      >
      >What method to you use for your large-scale C# system?
      >
      >Thanks in advance,
      >Ivan Krivyakov
      >
      >
      >.
      >[/color]

      Comment

      • Ivan Krivyakov

        #4
        Re: Large scale C# development

        "Yura2000" <yurig@clal-ins.co.il> wrote in message news:0b1601c3a8 42$b09a5c80$a40 1280a@phx.gbl.. .[color=blue]
        >
        > You may use kind of setup project called ReferenceCollec tor
        > (for instance).
        > All what he will do - compile needed DLLs ant output them
        > into defined place - same place for all developers.[/color]

        How do you deal with Debug/Release problem?
        Same question goes to Randy.

        Ivan


        Comment

        • Flare

          #5
          Re: Large scale C# development

          > How do you deal with Debug/Release problem?[color=blue]
          > Same question goes to Randy.[/color]

          I have very much the same "problem" so im listening....

          Anders


          Comment

          Working...