Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>A scalable solution is to do <strong><a href="http://svnbook.red-bean.com/en/1.0/ch07s03.html" rel="nofollow">svn-external</a> on the solution directory</strong> so that your imported projects appear parallel to your other projects. Reasons for this are given below.</p> <p><strong>Using a separate sub-directory for "imported" projects, e.g. <code>externals</code>, via svn-external seems like a good idea until you have non-trivial dependencies between projects.</strong> For example, suppose project A depends on project on project B, and project B on project C. If you then have a solution S with project A, you'll end up with the following directory structure:</p> <pre><code># BAD SOLUTION # S +---S.sln +---A | \---A.csproj \---externals +---B &lt;--- A's dependency | \---B.csproj \---externals \---C &lt;--- B's dependency \---C.csproj </code></pre> <p>Using this technique, <strong>you may even end up having multiple copies of a single project in your tree</strong>. This is clearly not what you want.</p> <p>Furthermore, if your projects use <a href="http://www.nuget.org/" rel="nofollow">NuGet</a> dependencies, they normally get loaded within <code>packages</code> top-level directory. This means that <strong>NuGet references of projects within <code>externals</code> sub-directory will be broken</strong>.</p> <p>Also, if you use <a href="http://en.wikipedia.org/wiki/Git_%28software%29" rel="nofollow">Git</a> in addition to SVN, a recommended way of tracking changes is to have a separate Git repository for each project, and then a separate Git repository for the solution that uses <a href="https://www.kernel.org/pub/software/scm/git/docs/git-submodule.html" rel="nofollow"><code>git submodule</code></a> for the projects within. If a Git submodule is not an immediate sub-directory of the parent module, then <strong>Git submodule command will make a clone that is an immediate sub-directory</strong>.</p> <p>Another benefit of having all projects on the same layer is that you can then create a "super-solution", which contains projects from all of your solutions (tracked via Git or svn-external), which in turn allows you to <strong>check with a single Solution-rebuild that any change you made to a single project is consistent with all other projects</strong>.</p> <pre><code># GOOD SOLUTION # S +---S.sln +---A | \---A.csproj +---B &lt;--- A's dependency | \---B.csproj \---C &lt;--- B's dependency \---C.csproj </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload