3

現在、vs2k12および.net 4.5にアップグレードしているため、ビルドプロセスを実行し、CIサーバーですべてを再び機能させるようにしていますが、問題が発生しています。

物事がどのように機能するかは次のとおりです。

2つのWebプロジェクトを含むソリューションファイルがあります。開発者のマシンでは、これらは「インプレース」でコンパイルされ(出力はリダイレクトされません)、IISは開発とテストのためにそれぞれのプロジェクトフォルダーを指します。この部分は問題ありません。

私たちのビルドマシンでは、各Webアプリケーション(2)の出力を別々のフォルダーにリダイレクトして、インストーラーでパッケージ化する必要があります。これが問題です。何が起こっているのかというと、Webプロジェクトのコンテンツの1つが、他のWebプロジェクトフォルダー内に収まり、各プロジェクトに独自のファイルがあるため、Global.aspxやweb.configなどのファイルが上書きされます。

以前はWebデプロイメントプロジェクトを使用してこれを実現していましたが、現在は非推奨になっているため、msbuildのWeb公開メカニズム/プロファイルを使用しようとしていますが、基本的には失われています。

私はここで言及されていることを試しました:

私がやろうとしているのはファイルシステムのコピーだけであり、派手なschmancyのpublish-to-some-web-serverの魔法ではないので、私は単純な何かを見逃しているに違いありません。

現時点では、次のように、nantビルドスクリプトからslnファイルでmsbuildを呼び出しています。

<msbuild project="${root.dir}\WebPortal\WebPortal ExtJS\WebPortal ExtJS.sln" verbosity="${tools.dotnet.msbuild.verbosity}">
    <property name="Configuration" value="${msbuild.configuration}" />
    <property name="OutputPath" value="${project.builddir}" />
    <property name="DeployOnBuild" value="true" />
    <property name="DeployTarget" value="PipelinePreDeployCopyAllFilesToOneFolder " />
    <property name="WebPublishMethod" value="FileSystem" />
    <property name="publishUrl" value="${project.builddir}" />
    <property name="DeleteExistingFiles" value="true" />
    <property name="DebugSymbols" value="${msbuild.debugSymbols}" />
    <property name="DebugType" value="${msbuild.debugType}" />
</msbuild>

同じソリューションファイルからビルドされたときに出力が正しくリダイレ​​クトされるようにするには、各Webプロジェクトに対して何をする必要がありますか?具体的には、各csprojに出力フォルダーを設定することを考えましたが、開発者のマシンでコンパイルしたときに出力がどこに移動するかも変更されます。これは、パスをより単純/混乱を少なく/よりクリーンに保つために、可能な限り避けたいと思います。 。

4

1 に答える 1

5

だから私はすべてが機能するようになりました、これが私が今MSBuildと呼んでいる方法です:

<msbuild project="${root.dir}\WebPortal\WebPortal ExtJS\WebPortal ExtJS.sln"
                 verbosity="${tools.dotnet.msbuild.verbosity}">
            <property name="Configuration" value="${msbuild.configuration}" />
            <property name="DeployDir" value="..\..\${output.dir}" />
            <property name="DeployOnBuild" value="true" />
            <property name="PublishProfile" value="BuildMachineDeployment" />
            <property name="DebugSymbols" value="${msbuild.debugSymbols}" />
            <property name="DebugType" value="${msbuild.debugType}" />
            <arg value="/m" />
        </msbuild>

次に、展開プロファイルの.pubxmlファイル内で、作成した$(DeployDir)変数を使用するようにこのプロパティを設定します。

<publishUrl>$(DeployDir)\EmerGeo Portal</publishUrl>

これで、ソリューション内のすべてのWebプロジェクトがビルドされ、正しいフォルダーに自動的にデプロイされます。

于 2013-01-15T23:25:32.667 に答える