如何在MSBuild构建的Azure Cloud Service包中启用远程调试

aba*_*hev 2 .net msbuild teamcity azure azure-cloud-services

我正在ccproj通过MSBuild直接构建项目(在TeamCity中):

msbuild Project.Azure.ccproj /p:Configuration=Debug /t:Publish
Run Code Online (Sandbox Code Playgroud)

如何启用远程调试器?就像在UI中一样:

在此输入图像描述

cla*_*ndk 6

我不认为它可用作命令行开关.我做了一些搜索,只在这里找到了你的问题.

如果我在VS 2013 Update 1中进行发布,启用调试,它会在输出目录中创建一个临时的.cscfg文件以及要上载的包(现在几乎是原来的两倍)..cscfg文件包含一些额外的设置:

<Setting name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.Connector.Enabled" value="true" />
<Setting name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.Connector.Version" value="2.3" />
<Setting name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.ClientThumbprint" value="XXXX" />
<Setting name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.ServerThumbprint" value="XXXX" />
Run Code Online (Sandbox Code Playgroud)

其中XXXX是由VS创建的证书的指纹,并安装在证书存储区(我的本地)中,其友好名称为RemoteDebuggerZZZZZ.

更新的.csdef文件包含我的webrole下面的以下部分:

<Endpoints>
  <InputEndpoint name="HttpIn" protocol="http" port="80" localPort="80" />
  <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="https" localPort="443" />
  <InstanceInputEndpoint name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.Connector" localPort="30398" protocol="tcp">
    <AllocatePublicPortFrom>
      <FixedPortRange min="30400" max="30424" />
    </AllocatePublicPortFrom>
  </InstanceInputEndpoint>
  <InstanceInputEndpoint name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.Forwarder" localPort="31398" protocol="tcp">
    <AllocatePublicPortFrom>
      <FixedPortRange min="31400" max="31424" />
    </AllocatePublicPortFrom>
  </InstanceInputEndpoint>
</Endpoints>
Run Code Online (Sandbox Code Playgroud)

而对于我的工人角色:

<Endpoints>
  <InstanceInputEndpoint name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.Connector" localPort="30398" protocol="tcp">
    <AllocatePublicPortFrom>
      <FixedPortRange min="30425" max="30449" />
    </AllocatePublicPortFrom>
  </InstanceInputEndpoint>
  <InstanceInputEndpoint name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.Forwarder" localPort="31398" protocol="tcp">
    <AllocatePublicPortFrom>
      <FixedPortRange min="31425" max="31449" />
    </AllocatePublicPortFrom>
  </InstanceInputEndpoint>
</Endpoints>
Run Code Online (Sandbox Code Playgroud)

它还为我的worker角色添加了一个证书部分:

<Certificates>
  <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.TransportValidation" storeLocation="LocalMachine" storeName="My" />
</Certificates>
Run Code Online (Sandbox Code Playgroud)

..并为我的网络角色添加了相同的证书:

<Certificates>
  <Certificate name="https" storeLocation="LocalMachine" storeName="My" />
  <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.TransportValidation" storeLocation="LocalMachine" storeName="My" />
</Certificates>
Run Code Online (Sandbox Code Playgroud)

我手动添加了"https"证书,所以之前就是这样.

似乎VS中的工具创建了一系列端口来访问远程调试工具使用的端口30398和31398,并将"TransportValidation"证书添加到证书列表中.

没有为任一角色类型添加额外设置或导入.

我还没有找到关于此的一些文档,所以如果有人能说清楚,请做!

希望这有助于其他人尝试这一点.