2012-03-26 14 views
1

だから、私は最終的にです.NuGetのWeb.config.transformシステムではサポートされていないWeb.configで何かをする必要があります。Install.ps1またはWeb.config.transform - 最初に行われるのは何ですか?

ドキュメントを検索するのに2時間を費やした後、Web.config.transformが適用される前または後にInstall.ps1が発生するかどうかはわかりません。

私はこのようなWeb.config.transformファイルを定義するために使用:

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

はここに新しいものだ - requirePermission="false"属性はミディアム・トラストをサポートするために必要です。

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

私は新しいWeb.config.transformバージョンをリリースする場合は2つのセクション要素があるでしょうから、それは彼らのASP.NETプロジェクトをクラッシュします:Install.ps1は前を発生する場合

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

Web.config.transform、configuration/configSections/section[@name='resizer']のすべての一致を削除できます。それがの後にの後に発生した場合、削除する重複の1つを選択する必要があります。

これは解決するのはかなり簡単な問題ですが、まだインターネットフォーラムでは答えられていません。投稿することで、次のナゲッターの生活を楽にしたいと考えています。

答えて

1

NuGetコードを読み込んで、install.ps1がの後に発生します。 Web.config.transform。下記のNuGetのコードで

は、Web.config.transformはinstalls.ps1が最後のイベントに呼ばれている間ExtractPackageFilesToProjectで呼び出さOnPackagageReferenceAddedさ:

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); 
    } 
関連する問題