将输出现有程序集作为结果的 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
很重要。
我需要创建 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
很重要。