Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 MSBuild:将项目引用更改为文件二进制引用_Visual Studio 2010_Xpath_Ant_Msbuild_Xmltask - Fatal编程技术网

Visual studio 2010 MSBuild:将项目引用更改为文件二进制引用

Visual studio 2010 MSBuild:将项目引用更改为文件二进制引用,visual-studio-2010,xpath,ant,msbuild,xmltask,Visual Studio 2010,Xpath,Ant,Msbuild,Xmltask,我有几个用MSBuild构建的.net/C项目 在我正在构建的项目中,有一些对其他C项目的项目引用 我只构建单个项目,所以我希望在构建期间将项目引用重新指向文件夹中的实际二进制文件 我已将MSBuild步骤的BuildProjectReferences设置为False 因此,本质上我希望MSBuild忽略项目引用,并在新目录中查找这些二进制文件 这可能吗?这是否可能,而不必在生成之前动态修改项目文件 **更新1** 更多信息可能会有所帮助……实际上,我正在通过Ant/AntDotNet/MSBu

我有几个用MSBuild构建的.net/C项目

在我正在构建的项目中,有一些对其他C项目的项目引用

我只构建单个项目,所以我希望在构建期间将项目引用重新指向文件夹中的实际二进制文件

我已将MSBuild步骤的BuildProjectReferences设置为False

因此,本质上我希望MSBuild忽略项目引用,并在新目录中查找这些二进制文件

这可能吗?这是否可能,而不必在生成之前动态修改项目文件

**更新1**

更多信息可能会有所帮助……实际上,我正在通过Ant/AntDotNet/MSBuild构建每个二进制文件,并将其上载到Artifactory。我基本上是使用Ivy的.Net二进制文件依赖关系管理

现在我的依赖项的上传和下载工作正常

我唯一缺少的部分是让MSBuild查找作为文件依赖项的二进制文件,而不是它在项目文件中的项目引用

**更新2**

看起来MSBuild支持使用XMLPoke和XMLPeek编辑csproj文件

因此,在我的情况下,我需要在项目文件中更改以下内容:

{MyReferencedProjectGUID} 我的参考项目 错误的 对此

<Reference Include="MyReferencedProject">
</Reference>
有人能给我点建议吗

关于更新的回答2:
你的问题与……有关/重复。没有简单的方法可以转换它。您应该为它编写MSBuild自定义任务,以便在生成之前更新MSBuild项目文件。

我最终将Ant与插件结合使用

转换以下项目引用:${Project.ItemGroup.ProjectReference.Name} 转换完成。 在第一个xmltask中,我们将Name元素设置为BinaryName,以便找到它

接下来,我们有两个Ant Replace任务,它们会改变如下内容

"<BinaryName>MyReferencedProject</BinaryName>" 

在上一个xmltask中,我们将转换为文件引用的项目引用移动到通常具有文件引用的上层ItemGroup中


最后我们删除了ProjectReferences部分。

好的,看起来我需要为它提供某种XPath语句。非常感谢您在XPath/XSLT领域提供的任何帮助。我认为您不能通过XPath/XSLT来实现这一点。您需要从引用的项目中获取OutputPath和AssemblyName属性,并将其应用于二进制引用您的命名是标准化的,因此我不需要文件中的任何属性。文件引用将始终与项目名称完全匹配。
"<Reference Include="MyReferencedProject"></Reference>"