有没有办法创建一个NuGet包,当包安装到项目中时,它会添加对"复制本地"设置为false的dll的引用?
我假设它将是'install.ps1'文件中的某种脚本.
Jim*_*nts 20
是的,您可以使用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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是这个MSDN文档应该有所帮助.
ObjectHanselman的使用解析为VSProject接口.$project变量的NuGet给你解决的项目接口.我认为这个install.ps1可以满足您的要求 - 包中添加的所有DLL都被赋予Copy Local值false.请注意,这里我没有使用AssemblyReferences列表做任何事情,除了从中获取所有名称 - 如果你想要基于目标框架的条件等,你可能需要做更多的事情.
param($installPath, $toolsPath, $package, $project)
$asms = $package.AssemblyReferences | %{$_.Name}
foreach ($reference in $project.Object.References)
{
if ($asms -contains $reference.Name + ".dll")
{
$reference.CopyLocal = $false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4886 次 |
| 最近记录: |