Adding a ProjectReference to a project that is not in the same solution

放肆的年华 提交于 2020-07-18 08:43:24

问题


While doing some refactoring of our projects and solution files, i have separated some .sln files to contain less projects.

Occasionally i need to reference some projects from outside the scope of the current .sln file.

For example, my initial state was this:

SOLUTION A

  • PROJ A
  • PROJ B

After refactoring it would look like this:

SOLUTION A_NEW

  • PROJ A

SOLUTION B_NEW

  • PROJ B

My question is -- Is it possible to add a ProjectReference node to a project that is not defined in the same VS solution? (in my case, having PROJ A have a project reference to PROJ B).

Also, if it is possible, is that recommended?

I know that this is not possible from the VS IDE, only by editing the .csproj file manually.


回答1:


You can't do this. A project reference includes an identifying GUID for the referenced project, which is maintained in the solution file in order to track solution build options and dependencies. If you try to reference a project that is not in the solution, Visual Studio will complain.

You can add a file reference to the assembly produced by a project that's not in the solution, of course.

UPDATE: Since this got downvoted, I'll refine my answer.

Though it's technically possible to craft a project file that references another project outside the same solution, Visual Studio won't help you to do it easily. One very good reason why it's a bad idea to do this (that I've observed) is that whatever Solution Configuration and Platform you're building (the referencing project) will be ignored if MSBuild decides to build the referenced project - the default Configuration and Platform specified in that referenced project file will be used instead. Thus you may end up with a mixture of binary types in different folders.




回答2:


Temporarily add the project to the solution, add a reference to it, unload the project that now has a reference added to it, remove the referenced project, reload the project with the reference.

If you don't unload the project then the reference will be automatically removed by Visual Studio when the referenced project is removed.

As you can probably tell, Visual Studios not designed to do this and you'd be better defining a build order for the solutions and use assembly references instead.




回答3:


You can definitely add a project to a solution A that is in solution B. There is not any problem with that. From my experience, it's not something that I usually have done or do, but sometimes need to. This can be especially true on large projects where you need different nodes of your architecture to reuse same code base.

Hope this helps.



来源:https://stackoverflow.com/questions/11601950/adding-a-projectreference-to-a-project-that-is-not-in-the-same-solution

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!