自动注入不适用于本机C ++项目的道具/目标文件

时间:2014-09-12 12:09:58

标签: nuget nuget-package-restore

我在NuGet v2.8.50506.491中使用Visual Studio 2013进行自动包恢复。

我已经使用{package ID} .props文件向我的包添加了一个构建文件夹。但是,该文件显然没有在恢复时注入vcxproj。正确地还原了包及其所有内容,但在vcxproj属性中没有任何定义可见。如果在内存中发生属性注入,则可能会出现这种情况,但由于道具中未明确定义的路径未被继承,构建将失败。

如果我在本地软件包存储库中添加对props文件的显式引用,则项目构建成功,因此props文件中的路径没有问题。

我也尝试在构建中的“原生”子文件夹中添加道具,也无济于事。

来自nuspec的摘录:

<file src="build\MyPackage.targets" target="build\MyPackage.targets" />

我还尝试了一个目标文件,而不是/和一个道具文件,但这也不起作用。

我应该补充一点,我已经在sln文件夹中定义了Nuget.config,其中包含了我的包存储库的绝对路径:

<config>
  <add key="repositoryPath" value="C:\Packages" />
</config>

2 个答案:

答案 0 :(得分:2)

我今天遇到了这个问题,最终我意识到我的.nuspec和.targets文件的名称与我的包的id不同,这显然是个问题。重命名.nuspec和.targets文件以匹配包ID,使NuGet正确地开始注入vcxproj。我不确定这两个文件中的哪一个是问题,或者两者都是,但它现在正常工作,因为所有三个名称都匹配。

答案 1 :(得分:0)

仅在您安装 NuGet包时才会注入.targets.props文件引用。这与仅在程序包安装时创建程序集引用的.NET项目相同。

稍后当您构建项目时,包恢复机制仅下载并提取NuGet包,以便先前“悬空”.target / .props / assembly引用成为有效引用。