2

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

msbuild Project.Azure.ccproj /p:Configuration=Debug /t:Publish

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

在此处输入图像描述

4

3 回答 3

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" />

其中 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>

对于我的工人角色:

<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>

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

<Certificates>
  <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.TransportValidation" storeLocation="LocalMachine" storeName="My" />
</Certificates>

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

<Certificates>
  <Certificate name="https" storeLocation="LocalMachine" storeName="My" />
  <Certificate name="Microsoft.WindowsAzure.Plugins.RemoteDebugger.TransportValidation" storeLocation="LocalMachine" storeName="My" />
</Certificates>

我已经手动添加了“https”证书,所以以前就在那里。

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

没有为任何一种角色类型添加额外的设置或导入。

我还没有找到关于这方面的一些文档,所以如果有人能解释一下,请做!

希望这可以帮助其他人尝试这个。

于 2014-05-06T20:57:57.527 回答
1

我们已经能够为每个环境的 Azure 项目创建不同的配置文件。然后我们传入这个:

/p:TargetProfile=Dev 

这样,它就可以使用正确的云服务配置文件构建。

除此之外,我知道我最终只会编写一些一次性的 C# 甚至是 Powershell 脚本来在构建后修改配置。

于 2014-01-20T17:07:02.667 回答
1

Azure 文档中对此进行了说明。

基本上,您应该获取Visual Studio 2013 的远程工具,然后将以下属性添加到 msbuild 命令:

msbuild /TARGET:PUBLISH /PROPERTY:Configuration=Debug;EnableRemoteDebugger=true;VSX64RemoteDebuggerPath="<path-to-remote-tools>";RemoteDebuggerConnectorCertificateThumbprint="<thumbprint-of-ceritificate-that-is-added-to-the-cloud-service>";RemoteDebuggerConnectorVersion="2.4" "<path-to-solution-file>"

VSX64RemoteDebuggerPathVisual Studio 远程工具中包含“msvsmon.exe”的文件夹的路径在哪里

于 2014-08-28T08:11:22.100 回答