如何排除“;“任何CPU”;从NuGet包构建?

如何排除“;“任何CPU”;从NuGet包构建?,nuget,Nuget,我想打包一个仅适用于x86和x64窗口的DLL,因为它会将Pinvoke打包为本机DLL 我有这个nuspec文件: $id$ $version$ $title$ $author$ $author$ 假的 $description$ 首次Nuget发布 $版权所有$ 土生土长的丑东西 但是,在运行numget pack-Properties Configuration=Release-NoDefaultExcludes时,AnyCPU变量仍然驻留在生成的包中 如果我将AnyCPU构建目标一起

我想打包一个仅适用于x86和x64窗口的DLL,因为它会将Pinvoke打包为本机DLL

我有这个
nuspec
文件:


$id$
$version$
$title$
$author$
$author$
假的
$description$
首次Nuget发布
$版权所有$
土生土长的丑东西
但是,在运行
numget pack-Properties Configuration=Release-NoDefaultExcludes
时,
AnyCPU
变量仍然驻留在生成的包中

如果我将
AnyCPU
构建目标一起删除,则会出现以下错误:

Error NU5012: Unable to find 'C:\Users\RabJen\Documents\git\MySolution\MyNativeDLL\bin\Release\MynativeDLL.dll'. Make sure the project has been built.

我缺少什么?

当您不将文件名传递给
nuget pack
时,它将查找任何MSBuild项目文件(如
csproj
),生成它,并包含输出程序集。我没有看到任何不包括项目输出的情况


因此,最好的选择是显式地告诉nuspec文件
nuget pack
,例如
nuget pack WHERTHE.nuspec
。这意味着您的构建脚本需要在打包之前构建项目,因为NuGet将不再构建您的项目,您还需要将所有变量(由
$
包围的任何变量)替换为实际值。

如果您的包只包含x86和x64 DLL,而不包含其他内容或内容文件,您可以尝试用实际值替换所有
$variables$
,然后
nuget pack file.nuspec
。如果您不打包项目,它将不会尝试打包项目输出。如果我只是对上面的nuspec文件执行
nuget pack
,它将尝试打包
Debug
版本。
nuget pack
将查找csproj并打包,其中包括获取项目输出<代码>nuget pack无论什么。nuspec可能不会。是的,这成功了。我用实际值替换了
$
中的所有内容,并运行了
nuget pack mynativedl.nuspec