[英]How to enable remote debugging in Azure Cloud Service package built by MSBuild
我正在通过MSBuild(在TeamCity中)直接构建ccproj
项目:
msbuild Project.Azure.ccproj /p:Configuration=Debug /t:Publish
如何启用远程调试器? 就像在UI中一样:
我不认为它可用作命令行开关。 我做了一些搜索,只在这里找到了你的问题。
如果我在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>
它还为我的worker角色添加了一个证书部分:
<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”证书添加到证书列表中。
没有为任一角色类型添加额外设置或导入。
我还没有找到关于此的一些文档,所以如果有人能说清楚,请做!
希望这有助于其他人尝试这一点。
我们已经能够为每个环境的Azure项目创建不同的配置文件。 然后我们传入这个:
/p:TargetProfile=Dev
这样,它就可以使用正确的Cloud Service配置文件构建。
除此之外,我知道我最终只会编写一些一次性的C#甚至是Powershell脚本来修改构建后的配置。
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>"
其中VSX64RemoteDebuggerPath
是Visual Studio远程工具中包含`msvsmon.exe的文件夹的路径
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.