我想为MEF插件编写nuspec。 我可以将xxx.dll复制到内容目录,如下所示。
<files>
<file src="Alhambra\bin\Release\Plugins\Alhambra.Plugin.SqlServer.dll" target="content\Plugins\Alhambra.Plugin.SqlServer.dll" />
<file src="Alhambra\bin\Release\Alhambra.dll" target="lib\Alhambra.dll" />
</files>
但是我无法在用户项目中设置文件属性来复制输出目录。
感谢您提出任何建议或代码段。
答案 0 :(得分:0)
我的方法是将插件作为单独的文件添加到项目中。为此,您需要一个安装脚本(请参阅NuGet docs for this)。
我的解决方案是以下脚本:
param($ installPath,$ toolsPath,$ package,$ project)
Function add_file($file)
{
$do_add = 1
foreach($item in $project.DTE.ActiveSolutionProjects[0].ProjectItems)
{
if ($item -eq $file)
{ $do_add = 0 }
}
if ($do_add -eq 1)
{
$added = $project.DTE.ItemOperations.AddExistingItem($file)
$added.Properties.Item("CopyToOutputDirectory").Value = 2
$added.Properties.Item("BuildAction").Value = 0
}
}
add_file(<file1>)
add_file(<file2>)
当然,当用户卸载软件包时,您需要清理:
param($installPath, $toolsPath, $package, $project)
Function remove_file($file)
{
foreach($item in $project.DTE.ActiveSolutionProjects[0].ProjectItems)
{
if ($item.Name -eq $file)
{
$item.Delete()
}
}
}
remove_file(<file1>)
remove_file(<file2>)