0

We have a big project(solution) with several smaller projects using some common assemblies (no GAC). Every time a project is changed and has to be tested, all files in the solution must be deployed in a testing location, separate from the main branch. I would like to deploy only the files that have changed and use the ones not changed from the main branch. Something like this:

[MainBranchFolder]

  • File1.dll
  • File2.dll
  • File3.dll
  • .....

  • [Branch1 subfolder]

    • File2.dll

So, Branch1 contains only File2.dll. When the programs runs, it will look for any dlls in current folder and, if not found, will look into Parent folder. I know a solution for this problem that requires some code changes but I wonder if something like this can be achieved using configuration only

[Edit] I see several ppl suggested some source code management. However this is not a source code issue, it's a binary code issue. MainBranch in my example is not source code, is a folder with all the compiled assemblies (exe and dll) in my projects

user628661
  • 81
  • 1
  • 1
  • 9

3 Answers3

1

It sounds like you could use some Software Configuration Management (SCM)!

There are many choices out there and a quick Google search will reveal plenty. My preference is definately GIT.

Check out: http://git-scm.com/

poy
  • 10,063
  • 9
  • 49
  • 74
1

with the Team Foundataion Server, you can do that with the customized build.

Matt
  • 6,010
  • 25
  • 36
0

All of the responses seem to have a Code Versioning theme, which I'm seeing is not what you're looking for.

I ran into a different, but potentially similar situation:

3 Applications, each requires the same librar(ies). Publishing the primary application requires the other 2 to be updated. GAC was not an option (don't ask!)


Solution 1: I know where it is, just give me the damn thing! (Which also let me store all kinds of useful common settings dictated by the master installed program.)


My solution was to maintain a known registry key:

Part 1: The registry Entry

HKLM\Software\FoobarInternational\CommonLibrary1 [String]

In CommonLibrary1 I stored the path to the common DLL's.

Part 2: The common "find my dll" library

Think plugin architecture - it looks in current dir for dll, and if fails, checks the the provided registry key for correct location.


Solution 2: Taking a walk


In a similar manner to solution 1, the library starts in its current directory, looks for the DLL, and if its not found, checks 1 directory higher.


Here are a few links to help you with each:

OR depending on what you need . .

string directoryName = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;  
Community
  • 1
  • 1
JFish222
  • 1,026
  • 7
  • 11
  • Thanks although I still hope I can find a more configuration oriented solution, no or minimal code required. This seems to need some substantial coding for me, not that is difficult or that big but it affects the rarely changed part which is the foundation of our projects – user628661 Oct 11 '13 at 16:08