创建NuGet包,该包安装的引用的“复制本地”设置为false
有没有一种方法可以创建一个NuGet包,当该包安装到项目中时,它会添加对DLL的引用,并将“Copy Local”设置为false创建NuGet包,该包安装的引用的“复制本地”设置为false,nuget,Nuget,有没有一种方法可以创建一个NuGet包,当该包安装到项目中时,它会添加对DLL的引用,并将“Copy Local”设置为false 我假设它是“install.ps1”文件中的某种脚本。是的,正如您所猜测的,您可以使用install.ps1执行此操作 下面是一个install.ps1示例,每次运行它时都会翻转System.dll上的标志。使用以下示例,您应该能够了解如何做自己想做的事情: param($installPath, $toolsPath, $package, $project) f
我假设它是“install.ps1”文件中的某种脚本。是的,正如您所猜测的,您可以使用install.ps1执行此操作 下面是一个install.ps1示例,每次运行它时都会翻转System.dll上的标志。使用以下示例,您应该能够了解如何做自己想做的事情:
param($installPath, $toolsPath, $package, $project)
foreach ($reference in $project.Object.References)
{
if($reference.Name -eq "System")
{
if($reference.CopyLocal -eq $true)
{
$reference.CopyLocal = $false;
}
else
{
$reference.CopyLocal = $true;
}
}
}
但是这个MSDN文档应该会有所帮助
Hanselman使用解析到对象
变量NuGet为$project
param($installPath, $toolsPath, $package, $project)
$asms = $package.AssemblyReferences | %{$_.Name}
foreach ($reference in $project.Object.References)
{
if ($asms -contains $reference.Name + ".dll")
{
$reference.CopyLocal = $false;
}
}
我发现了一篇Hanselman关于在NuGet Powershell脚本中“添加”引用的帖子:$project.Object.references.Add(“Microsoft.CSharp”);。这让我更接近了,但我很难找到显示如何选择和修改更改“复制本地”的参考的文档,并用更好的示例更新了答案。当我在VS2015中这样做时,出于好奇,我经常会得到重复的True False,为什么不想在本地复制文件?@kiewic这是一个很好的问题。这个问题我希望我5年前的自我记录下来,因为我现在还不知道!