将输出现有程序集作为结果的 MSBuild .NET 项目

MSBuild .NET project that will output existing assembly as it's result

我需要创建 csproj 文件,该文件可用作 VS2013 中的项目参考,并将输出预构建的二进制文件,因为它是 "Build" 结果。

我们使用参考项目进行构建,但是公司政策不允许所有人访问其中的一些项目。因此,项目需要手动更新才能构建。这在切换分支和编辑项目文件时确实是一个很大的不便,所以我想创建一个虚拟项目,它将作为它们的 "output" 绑定到预构建的二进制文件,并且将被放置而不是真正的项目。

编辑: 将该程序集移动到 Nuget 包目前不是一个选项,因为 Nuget 在开发流程方面存在一些问题(当您需要 debug/test/develop 包时)。我看到一些 VS 扩展实现了 Nuget 包和本地项目之间的切换,这可能会解决这个问题,但我不确定它是否会被接受并想探索其他选项。

要清楚 - 我想避免以任何方式编辑项目,这样项目就可以在从 Git 中拉出后干净地构建,而且我不必每次都清理它提交之前。

如何让那些受限制的(仅二进制)项目驻留在内部 Nuget 包源中,以便 Nuget 可以在构建时根据需要安装包?

我没有正确测试它,但解决方案似乎很简单(如果我正确理解问题的话)。

只需将其添加到现有的 .csproj,覆盖构建目标以仅提供预构建程序集的路径。

  <Target
      Name="Build"
      Returns="$(TargetPath)" />

这假定 TargetPath 属性 已经定义,如果您正在修改原始 .csproj,它应该自动定义。否则只需在 Build 任务之前在 <PropertyGroup> 中自己定义它。

请注意,定义 TargetPath 对解决您自己项目中的 ProjectReference 很重要。