5

現在、運用サーバーで展開プロセスを開始して実行しようとしています。現在、これを実現するために Web デプロイおよびパブリッシュ プロファイルを使用しています。運用サーバーに合わせて接続文字列を更新する以外は、すべて正常に動作しています。

私は使っている:

msbuild myProj.csproj /p:DeployOnBuild=true;PublishProfile=myProfile;Configuration=Release

発行パッケージを作成し、以下を行います。

call myProj.deploy.cmd /Y /M:http://myServer/MSDeployAgentService -allowUntrusted /U:user /:Password

したがって、これは機能しており、パッケージ化してからサーバーに正常に送信し、IIS を正しく構成しますが、間違ったデータベースを指しています。

私のパブリッシング プロファイルは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish />
    <MSDeployServiceURL>http://myserver</MSDeployServiceURL>
    <DeployIisAppPath>Website</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
    <UserName>user</UserName>
    <_SavePWD>True</_SavePWD>
    <PublishDatabaseSettings>
      <Objects xmlns="">
        <ObjectGroup Name="DBContext" Order="1" Enabled="False">
          <Destination Path="Data Source=server;Initial Catalog=ProductionDB;User ID=user;Password=&quot;password&quot;" Name="" />
          <Object Type="DbCodeFirst">
            <Source Path="DBMigration" DbContext="myproj.Repositories.DBContext, myproj.Repositories" MigrationConfiguration="myproj.Repositories.Migrations.Configuration, myproj.Repositories" Origin="Configuration" />
          </Object>
        </ObjectGroup>
        <ObjectGroup Name="DefaultConnection" Order="2" Enabled="False">
          <Destination Path="Data Source=server;Initial Catalog=ProductionDB;User ID=user;Password=&quot;password&quot;" Name="" />
          <Object Type="DbDacFx">
            <PreSource Path="Data Source=localhost;Initial Catalog=devDB;User ID=user;Password=&quot;password&quot;" includeData="False" />
            <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
          </Object>
          <UpdateFrom Type="Web.Config">
            <Source MatchValue="Data Source=localhost;Initial Catalog=devDB;User Id=user;Password=password" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
          </UpdateFrom>
        </ObjectGroup>
      </Objects>
    </PublishDatabaseSettings>
  </PropertyGroup>
  <ItemGroup>
    <MSDeployParameterValue Include="$(DeployParameterPrefix)DBContext-Web.config Connection String">
      <ParameterValue> Data Source=server;Initial Catalog=ProductionDB;User ID=user;Password="password"</ParameterValue>
    </MSDeployParameterValue>
    <MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String">
      <ParameterValue>Data Source=server;Initial Catalog=ProductionDB;User ID=user;Password="password"</ParameterValue>
    </MSDeployParameterValue>
  </ItemGroup>
</Project>

厄介なことに、これは、コマンドライン経由ではなく、VS2012 から直接公開する場合にうまく機能します。msbuild 呼び出しに欠けているスイッチやオプションはありますか?

私の myProj.SetParameters.xml ファイルのように正しく機能していません。そこに表示されている接続文字列が間違っています。これらを正しい接続文字列に手動で変更すると、web.xml ファイルはデプロイされた運用サーバー上で正しくなります。SetParameters ファイルに正しい文字列を取得するにはどうすればよいですか? どんな助けでも大歓迎です。

4

3 に答える 3

3

最後に、これを回避するために、Visual Studio で、運用サーバーで使用される接続文字列の値を保持するプロジェクトのルートに Parameters.xml ファイルを作成しました。これらは、デフォルト値の代わりに選択されて使用されます。

Parameters.xml ファイルは次のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<parameters>
    <parameter name="DefaultConnection-Web.config Connection String"
        description=""
        defaultValue=""tags="" />

必要な数だけ追加し、必要に応じて属性を設定するだけです

于 2013-02-15T09:15:20.370 に答える