MSBuild.ExtensionPack.tasks 从 MSBuild 主项目文件继承变量
MSBuild.ExtensionPack.tasks inheritance of variables from MSBuild main project file
案例:
当我从 MSBuild(使用 VS Build Tools 2017)构建时,我没有获得 $(ExtensionTasksPath) 变量的任何值
从主 msbuild 文件,当我使用集成 VS MSBuild 构建时,值从主文件传递到 MSBuild.ExtensionPack.tasks,这是预期的行为吗?为什么会发生?为了测试特定情况,我不使用任何属性。
Is that expected behavior and why does it happen?
我认为不是我们 expect.As 我在 VM 上测试,VS Build Tools2017 的 msbuild 获得的值与我们从 VS IDE.[=20= 的 msbuild 获得的值相同]
For the reason of this behavior I have some suggestions to help trouble
shooting:
1.First 最重要的是,确保两个场景都成功构建。
2.As你上面提到的,你在不同的虚拟机中运行它们,确保测试的两个文件是相同的并且是整个解决方案文件夹。(解决方案目录下的包文件夹有意义)
3.Check在.xxproj文件中,检查是否存在<Import Project="..\packages\MSBuild.Extension.Pack.1.9.1\build\net40\MSBuild.Extension.Pack.targets" ...>
我发现 $(ExtensionTasksPath)
属性 是在 MSBuild.Extension.Pack.targets
文件中定义的,并且这个文件是通过 <Import>
标签导入到 .xxproj 文件中的。
看看下面我的示例项目中的图片,其中安装了 nuget MSBuild.Extension.Pack:
我的项目安装了bu nuget扩展后,在csproj文件中有一个Import语句,打开我们可以发现:
此处定义的 $(ExtensionTasksPath) 的值。所以我猜你可能在目标文件或导入语句中丢失了某物,或者有某物损坏了这个 属性.
In summary:
1.keep整个解决方案文件夹可能是最好的建议。
2.And 如果它不起作用,请将下面的脚本添加到您的 .xxproj 文件中可以起作用:
<PropertyGroup>
<ExtensionTasksPath> Absolute path of your MSBuild.ExtensionPack.dll</ExtensionTasksPath>
</PropertyGroup>
它将覆盖标签中的值,无论您将程序集放在何处,只需添加绝对路径即可。
如果我的回答有帮助,请给我反馈。任何更新请随时与我联系。
案例: 当我从 MSBuild(使用 VS Build Tools 2017)构建时,我没有获得 $(ExtensionTasksPath) 变量的任何值 从主 msbuild 文件,当我使用集成 VS MSBuild 构建时,值从主文件传递到 MSBuild.ExtensionPack.tasks,这是预期的行为吗?为什么会发生?为了测试特定情况,我不使用任何属性。
Is that expected behavior and why does it happen?
我认为不是我们 expect.As 我在 VM 上测试,VS Build Tools2017 的 msbuild 获得的值与我们从 VS IDE.[=20= 的 msbuild 获得的值相同]
For the reason of this behavior I have some suggestions to help trouble shooting:
1.First 最重要的是,确保两个场景都成功构建。
2.As你上面提到的,你在不同的虚拟机中运行它们,确保测试的两个文件是相同的并且是整个解决方案文件夹。(解决方案目录下的包文件夹有意义)
3.Check在.xxproj文件中,检查是否存在<Import Project="..\packages\MSBuild.Extension.Pack.1.9.1\build\net40\MSBuild.Extension.Pack.targets" ...>
我发现 $(ExtensionTasksPath)
属性 是在 MSBuild.Extension.Pack.targets
文件中定义的,并且这个文件是通过 <Import>
标签导入到 .xxproj 文件中的。
看看下面我的示例项目中的图片,其中安装了 nuget MSBuild.Extension.Pack:
此处定义的 $(ExtensionTasksPath) 的值。所以我猜你可能在目标文件或导入语句中丢失了某物,或者有某物损坏了这个 属性.
In summary:
1.keep整个解决方案文件夹可能是最好的建议。 2.And 如果它不起作用,请将下面的脚本添加到您的 .xxproj 文件中可以起作用:
<PropertyGroup>
<ExtensionTasksPath> Absolute path of your MSBuild.ExtensionPack.dll</ExtensionTasksPath>
</PropertyGroup>
它将覆盖标签中的值,无论您将程序集放在何处,只需添加绝对路径即可。 如果我的回答有帮助,请给我反馈。任何更新请随时与我联系。