473,388 Members | 1,322 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,388 software developers and data experts.

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
Nov 15 '05 #1
4 1609
Ivan,
As far as I understand, for each C# project I must specify its
references.


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

Regards,

Randy
Nov 15 '05 #2
You may use kind of setup project called ReferenceCollector
(for instance).
All what he will do - compile needed DLLs ant output them
into defined place - same place for all developers.
-----Original Message-----
Let's say I have a big system with several dozen C# projects - someof them class libraries, some of them applications. Executables andlibraries 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 hugesolution file with a lot of projects?

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

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

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

In C++ world we solved this problem by creating smaller solution fileswith just a couple of projects in each, and handling overall system dependenciesin 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
.

Nov 15 '05 #3
"Yura2000" <yu***@clal-ins.co.il> wrote in message news:0b****************************@phx.gbl...

You may use kind of setup project called ReferenceCollector
(for instance).
All what he will do - compile needed DLLs ant output them
into defined place - same place for all developers.


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

Ivan
Nov 15 '05 #4
> How do you deal with Debug/Release problem?
Same question goes to Randy.


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

Anders
Nov 15 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Constandinos Mavromoustakis | last post by:
CFP: CLADE 2004-Challenges of Large Applications in Distributed Environments ------------------------------------------------- PhD student - Dept.Informatics at Aristotle University of...
9
by: limor | last post by:
Hi, I am considering using Python in a new testing tool application we intend to build for out product. I must get references before starting develope in this language , since although lots of...
36
by: Andrea Griffini | last post by:
I did it. I proposed python as the main language for our next CAD/CAM software because I think that it has all the potential needed for it. I'm not sure yet if the decision will get through, but...
2
by: Kymert persson | last post by:
Hi. I was wondering if there are any more C++ books along the lines of "Large scale C++ software design" by Lakos, J. I.e. concerning larger design issues in close relation to C++. I have made a...
28
by: puzzlecracker | last post by:
Large scale C++ software design, by John Lakos - people any good recommendations to this book?
9
by: Da~One | last post by:
This message has been posted to 2 groups, one to the VB.NET group, and the other to C#. I am trying to decide which language to commit to for a large scale project. I am looking for the input of...
16
by: marktxx | last post by:
I've finally gotten around to reading the book "Large-Scale C++ Software Design" by John Lakos. Has anyone documented what parts of this book are now obsolete due to C++ language changes such as...
11
by: Joseph Geretz | last post by:
I've been looking at two approaches for the maintenance of Session state for a Web Service application. One approach uses the old familiar Session object which I've used in the past for Web...
22
by: Jesse Burns | last post by:
I'm about to start working on my first large scale site (in my opinion) that will hopefully have 1000+ users a day. ok, this isn't on the google/facebook scale, but it's going to be have more hits...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.