Xml Install.ps1或Web.config.transform-哪个先发生?

Xml Install.ps1或Web.config.transform-哪个先发生?,xml,powershell,web-config,installation,nuget,Xml,Powershell,Web Config,Installation,Nuget,所以,我最终真的需要对Web.config做一些NuGet的Web.config.transform系统不支持的事情 在花了2个小时搜索文档后,我意识到没有关于Install.ps1是在Web.config.transform应用之前还是之后发生的消息 我曾经这样定义Web.config.transform文件: <?xml version="1.0"?> <configuration> <configSections> <section n

所以,我最终真的需要对Web.config做一些NuGet的Web.config.transform系统不支持的事情

在花了2个小时搜索文档后,我意识到没有关于Install.ps1是在Web.config.transform应用之前还是之后发生的消息

我曾经这样定义Web.config.transform文件:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="resizer" type="ImageResizer.ResizerSection"/>
  </configSections>
</configuration>
如果我发布一个新的Web.config.transform版本,它将使他们的ASP.NET项目崩溃,因为将有两个部分元素:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="resizer" type="ImageResizer.ResizerSection" />
    <section name="resizer" type="ImageResizer.ResizerSection" requirePermission="false"/>
  </configSections>
</configuration>

如果Install.ps1发生在Web.config.transform之前,我可以删除
configuration/configSections/section[@name='resizer']
的所有匹配项。如果在
之后发生,则我需要选择一个要删除的重复项


这是一个很容易解决的问题,但还没有在互联网论坛上得到回答,我希望通过发布它,让下一个掘金者的生活更轻松

我刚刚通读了NuGet代码,并在Web.config.transform之后安装了

在下面的NuGet代码中,在ExtractPackageFileStopProject中调用Web.config.transform,而在PackageReferenceAdded的最后一个事件中调用installs.ps1:

    protected void AddPackageReferenceToProject(IPackage package)
    {
        PackageOperationEventArgs args = CreateOperation(package);
        OnPackageReferenceAdding(args);

        if (args.Cancel)
        {
            return;
        }

        ExtractPackageFilesToProject(package);

        Logger.Log(MessageLevel.Info, NuGetResources.Log_SuccessfullyAddedPackageReference, package.GetFullName(), Project.ProjectName);
        OnPackageReferenceAdded(args);
    }


    private void OnPackageReferenceAdded(object sender, PackageOperationEventArgs e)
    {
        Project project = FindProjectFromFileSystem(e.FileSystem);
        Debug.Assert(project != null);
        _providerServices.ScriptExecutor.ExecuteScript(e.InstallPath, PowerShellScripts.Install, e.Package, project, this);
    }

我刚刚通读了NuGet代码,并在Web.config.transform之后安装了install.ps1

在下面的NuGet代码中,在ExtractPackageFileStopProject中调用Web.config.transform,而在PackageReferenceAdded的最后一个事件中调用installs.ps1:

    protected void AddPackageReferenceToProject(IPackage package)
    {
        PackageOperationEventArgs args = CreateOperation(package);
        OnPackageReferenceAdding(args);

        if (args.Cancel)
        {
            return;
        }

        ExtractPackageFilesToProject(package);

        Logger.Log(MessageLevel.Info, NuGetResources.Log_SuccessfullyAddedPackageReference, package.GetFullName(), Project.ProjectName);
        OnPackageReferenceAdded(args);
    }


    private void OnPackageReferenceAdded(object sender, PackageOperationEventArgs e)
    {
        Project project = FindProjectFromFileSystem(e.FileSystem);
        Debug.Assert(project != null);
        _providerServices.ScriptExecutor.ExecuteScript(e.InstallPath, PowerShellScripts.Install, e.Package, project, this);
    }