C# 将现有程序集作为';s结果

C# 将现有程序集作为';s结果,c#,.net,visual-studio,msbuild,projects-and-solutions,C#,.net,Visual Studio,Msbuild,Projects And Solutions,我需要创建csproj文件,该文件将在VS2013中用作项目引用,并将输出预构建的二进制文件作为“构建”结果 我们使用引用的项目进行构建,但是公司政策不允许每个人访问其中的一些项目。因此,需要手动更新项目以使其生成。在切换分支和编辑项目文件时,这确实是一个很大的不便,因此我想创建一个虚拟项目,该项目将绑定到预构建的二进制文件作为其“输出”,并将其放置在实际项目中 编辑:将该程序集移动到Nuget软件包目前不是一个选项,因为Nuget在开发流程方面存在一些问题(当您需要调试/测试/开发软件包时)。

我需要创建csproj文件,该文件将在VS2013中用作项目引用,并将输出预构建的二进制文件作为“构建”结果

我们使用引用的项目进行构建,但是公司政策不允许每个人访问其中的一些项目。因此,需要手动更新项目以使其生成。在切换分支和编辑项目文件时,这确实是一个很大的不便,因此我想创建一个虚拟项目,该项目将绑定到预构建的二进制文件作为其“输出”,并将其放置在实际项目中

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


明确地说,我要避免的是以任何方式编辑项目,这样在从Git中提取项目后,项目就可以干净地构建,并且我不必每次提交之前都清理它。

让那些受限(仅二进制)项目驻留在内部Nuget软件包提要中,这样Nuget就可以根据需要安装软件包了,在构建时?

我没有正确地测试它,但解决方案似乎非常简单(如果我正确理解了这个问题)

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

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

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


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

您是否尝试过使用git子模块?或者我遗漏了什么。向项目中添加一个预构建脚本,复制所引用程序集的最新版本,怎么样?创建一个虚拟项目听起来没有必要。Git子模块不是一个选项——我们没有访问该repo的权限,这就是问题所在。对于预构建脚本,它不会将引用从项目(这些项目中引用的)切换到构建的程序集(我们需要使用)。有类似问题的程序员需要这样做。事实上,项目依赖项解析(结合安全策略)是我当前项目中最糟糕的问题,所以它没有那么糟糕。我们正试图实施一些适当的解决办法。嗯,是我提出的。这不是一个选项,因为nuget在开发流程上有问题——我们只需要使用核心组件,但其他开发人员需要调试和开发它。我看到了一些允许在nuget包和项目之间切换的扩展,我们将看看它是如何运行的。但现在我需要一些其他的解决方案。