Visual Studio 2015,C#控制台项目+ C#库项目:
有没有办法在不使用Project引用(和Copy local = True)的情况下自动将相关项目二进制输出复制到特定“master”项目的输出目录?
我希望能够在没有实际二进制引用的情况下保持exe-s和dll-s松散耦合,但可以依赖相关的dll-s总是复制到正确的输出目录(例如Debug / Release)。
示例:
答案 0 :(得分:1)
我仅在VS2017上验证了此解决方案,但根据引用的MSDn文章的日期,它应与VS2015一起使用:使用ReferenceOutputAssembly
是您的csproj。
遗憾的是,该属性只能通过手动编辑csproj来添加。
<ProjectReference Include="..\..\Calfitec\PglLibPAC\PglOdpm\PglOdpm.csproj">
<Project>{261de855-9e8f-45de-b57d-fd4c7deb5f1b}</Project>
<Name>PglOdpm</Name>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
另请参阅:How to have a Project Reference without referencing the actual binary
这是该功能的预期用途:
有时候,您希望从项目B到项目A的项目引用来指示生成时依赖关系,但实际上并不想让程序集B引用程序集A(可能是因为它是仅运行时的依赖关系,或者是使用反射加载的)
答案 1 :(得分:0)
<强> TL; DR; Copy local
甚至出现的事实告诉我,Console具有直接的Add Reference依赖性,这有点违背了DI的目的。只需让Visual Studio通过Copy Local=true
执行此操作。
如果:
...那么你应该让Visual Studio 通过Copy Local = true
做事,因为Console有一个必须解决的直接依赖,而依赖注入(DI)甚至没有进入等式。如果您有大量项目,如果副本在结束时发生一次但是您没有表明这是您的方案,则可以显示它可以大大加快构建速度。
但是:
...然后,在其中一个项目中将 Post Build 步骤复制到单个目标文件夹中,可以更轻松地将相关DLL复制一次。在为大型解决方案开发插件/ DI时尤其如此。
请参阅&lt; 项目&gt;。 Properties.Build Events.Post-build事件命令行
听起来你想要使用DI,但Copy Local=true
的出现告诉我你的程序与图书馆有直接关系。 DI有什么意义?你的已经强烈耦合了。