|
Let me ask you this question - My group has WPF application, we use three custom built libraries in this WPF application. These libraries are built as separate projects and have their own Subversion repositories. (4 Subversion repositories altogether)
Question - Should we be using the .dll files in our WPF solution or should we be using the projects from Subversion? and bring the entire project into Visual Studio?
Keep in mind our WPF application isn't the only application that uses these 3 libraries, we have other solutions that use these libraries. We are bringing in the library projects because we frequently modify these libraries when working on our WPF app.
***Here is my concern - we are now moving to TFS from Subversion and TFS has, whats called, TFS projects. Should we be creating 4 different TFS projects, one for each Subversion repository or should we be putting all projects into one TFS project? In TFS you have to create work items for each TFS project so if we have a user story that might need modification of both the WPF app and a library, if the library is its own TFS project, then we will have to create work items in 2 different TFS projects. And that seems redundant/annoying/not efficient.
|
|
|
|
|
As with many things, it depends...
We do the same thing a lot where I work. Sometimes we reference a DLL, sometimes we share the project, sometimes we copy the project and reverse integrate the changes.
Referencing a DLL is the safest answer. You always know what version you are running against and upgrade it when you decide to (Test can run full test passes and make sure nothing broke by doing so).
Sharing a project is very dangerous and is rarely used. If you change an interface in project B, project A probably will no longer compile.
Making a copy of the project and reverse integrating changes is one of the best solutions. It allows bugs to be fixed from both sides of the project and each side gets to decide whether or not to integrate those fixes. This even has the added benefit of allowing you to heavily modify some things (Interfaces, Classes ect) that would otherwise break the other project while still being able to take some bug fix type integration back.
I'm getting tired so hopefully that makes sense.
The best way to accelerate a Macintosh is at 9.8m/sec² - Marcus Dolengo
|
|
|
|
|
"Sharing a project is very dangerous and is rarely used. If you change an interface in project B, project A probably will no longer compile."
you shouldn't be changing anything from interfaces (adding stuff is ok). Isn't that what the purpose of an interface is???
|
|
|
|
|
It is. It was meant to serve as an example, albeit a bad one.
Changing a hash function is something I have seen done in this scenario. The havoc this wreaks is... absolutely terrible. I don't even want to get into the details but knowing that this was the cause of the problem, FROM ANOTHER FREAKING PROJECT was angering to say the least.
The best way to accelerate a Macintosh is at 9.8m/sec² - Marcus Dolengo
|
|
|
|
|
Ok understood. Does anyone know, or can tell me how a project in TFS is structured? Do I create and put VS projects (dll, WPF, asp, etc) in a single TFS project and seperate them by folders? Or should I map a one-to-one with 1 Visual Studio project (ex. WPF) to one TFS project?
In my TFS book it shows "product families" as a folder in a TFS project. I assume this means a VS project???
|
|
|
|
|
A TFS project is not analogous to anything in Visual Studio. It is more for permissions and work item types.
For most people/teams they will work out of the same TFS Project. I've never strayed out of my TFS Project. We just have different folders for each Visual Studio Project. External teams have a different folder for their team still within our same TFS Project.
The only time I've seen people use other TFS Projects is when they have a different permission model, or different work item types they are tracking against.
The best way to accelerate a Macintosh is at 9.8m/sec² - Marcus Dolengo
|
|
|
|
|
OH! so you just keep one TFS project for all your applications? And separate them by folder in your TFS project.
Does everyone agree with this?
|
|
|
|
|
Reference the unless you plan to modify any of the projects.
|
|
|
|
|
chuckdawit wrote: Keep in mind our WPF application isn't the only application that uses these 3 libraries, we have other solutions that use these libraries.
I think this here is what defines it. If these projects are used by more than just one solution, it is usually a good idea to keep them independent.
As for your TFS question, I think the other option you are missing is creating 1 independent Team Project for all these libraries so as for them to remain completely independent from the projects that are using them. As always the devil is in the details and it will depend, among other things, in how these libraries are connected to one another.
|
|
|
|
|
Why is it so in c#
modified 20-Sep-12 23:04pm.
|
|
|
|
|
What does any of this have to do with C#?
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
|
Because it's a huge pain in the ass the keep straight!
|
|
|
|
|
Well said, and I live quite happily without it
"Any sort of work in VB6 is bound to provide several WTF moments." - Christian Graus
|
|
|
|
|
Because many programmers or software engineers are overwhelmed even by single inheritance. Most classes with multiple inheritance in C++ I saw, were badly designed. But you can implement as many interfaces as you like. Try it, count them and give feedback
------------------------------
Author of Primary ROleplaying SysTem
How do I take my coffee? Black as midnight on a moonless night.
War doesn't determine who's right. War determines who's left.
|
|
|
|
|
Well, one reason it's so is because .NET doesn't support multiple inheritance.
|
|
|
|
|
If we take a look at how Visual C++ implements multiple inheritance (on binary level) it becomes obvious that even the binary stuff under C++ is built up from the composition of single line inheritances (the reason for multiple vtables in the same object). So we can consider multiple inheritance as a language feature, a "syntactic sugar" that is somewhat a mixture of single line inheritance and object composition in "machine code". It would be possible to create a language supporting multiple inheritance on top of .Net with the same principles but multiple inheritance brings up some design-related questions. I think the single line inheritance is rather a design decision in C#.
|
|
|
|
|
Actually, the reason I mentioned it in regards to .NET not supporting it is because (to keep it in line with general .NET interoperability reasons), it would have to be baked into the CLS so that other languages could interact with it.
From Anders Hjelsberg:
"The question is, What about multiple inheritance? And will we get it? If not, why? The easy- the cop out answer at this point is that if we were going to have it, we needed to have it in the first release because it’s way too hard to add after the fact. Even if we did add it, we could never mandate it as being part of the CLS I don’t think, meaning that every language can support it. Multiple inheritance and VB, I don’t think that’s a great cocktail. If we had multiple inheritance, if it wasn’t usable in APIs, I wonder how useful it would really be. I think also when you analyze what is it that people want to do with multiple inheritance, in the vast majority of cases I think there are simpler answers than the full multiple inheritance enchilada with virtual base classes and the diamond problem and all of that stuff."
I don't just make this shizzle up after all.
|
|
|
|
|
Yes, this was one thing I was thinking about because if you wanted to implement multiple inheritance on top of .Net then it would require you to introduce some anonymous base classes (that embody the single line inheritances inside the composite class) and then the composite class itself is just the syntactic sugar provided by the language and inaccessible by the other languages, and of course you would be unable to reach the anonymous classes (classes with auto-generated name) too from other languages. Only some parts of your code (with single line inheritance) could be reached from other languages. My statement about the possibility of providing multiple inheritance in a language on top of .Net still holds. The fact that they allowed just single line inheritance in .Net that is an intersection between languages was a wise decision though, read a list of reasonings about that somewhere.
modified 24-Sep-12 7:58am.
|
|
|
|
|
pasztorpisti wrote: read a list of reasonings about that somewhere
Indeed - it's not a feature I missed when I moved over from C++ to C#. Now, if C# supported proper templates, I would be happy.
|
|
|
|
|
What features would you like to have from C++ templates? I think they are overcomplicated, and since the C++ specification describes just how they should work - and nothing about implementation - different C++ compilers handle them differently. I could tell you at least 2 big horror stories about this (one bug and one source code porting).
|
|
|
|
|
pasztorpisti wrote: the C++ specification describes just how they should work - and nothing about
implementation - different C++ compilers handle them differently
The key thing would be that .NET is standardised, so there would be no ambiguity. Some things I'd like - arithmetic operator overloading, explicit and partial specialisation.
|
|
|
|
|
The arithmetic part is indeed a huge problem in C#. About the template specialization: I think they are rarely used in C++ and even in those cases I've often use of it without good reason. A nice use of it is optimization like std::vector<bool> with packed bits, or code beautification. In other cases where it was used some other simpler solution could also do the job for me.
|
|
|
|
|
To answer your original question
Himanshu Yadav wrote: Re: WHY GIRLS DONT LIKE TO MARRY SOFTWARE ENGINEERS ?????
They must have read your posts. You might try posting anonymously though.
|
|
|
|
|
You made my day.
|
|
|
|