Xml Install.ps1或Web.config.transform-哪个先发生?
所以,我最终真的需要对Web.config做一些NuGet的Web.config.transform系统不支持的事情 在花了2个小时搜索文档后,我意识到没有关于Install.ps1是在Web.config.transform应用之前还是之后发生的消息 我曾经这样定义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
<?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);
}