我正在尝试使用 Powershell“Publish-AzureServiceProject”cmdlet 将 Node.js 包发布到 Azure。
使用默认的 osFamily="2" (Windows Server 2008 R2) 它可以按预期工作,但是当我使用 osFamily="3" (Windows Server 2012) 发布时,我收到以下错误:
上载包所需的名为 NetFx35 的功能在为部署选择的操作系统 * 中不可用。
显然我没有使用 .Net 但 3.5 是阻止我上传包的默认设置。
要指定 .Net 4.5,我读到我需要创建一个 roleproperties.txt 文件,其中包含:
TargetFrameWorkVersion=v4.5
并通过 /rolePropertiesFile 将其传递给 cspack。
但是,由于我自己没有调用 cspack,如何通过 Publish-AzureServiceProject 将该选项传递给 cspack?还是有其他解决方法?
目前我的 ServiceDefinition 看起来像这样:
<?xml version="1.0"?>
<ServiceDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Foo" upgradeDomainCount="1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WorkerRole name="Bar">
<Imports>
<Import moduleName="RemoteForwarder" />
<Import moduleName="RemoteAccess" />
</Imports>
<Startup>
<Task commandLine="setup_worker.cmd > log.txt" executionContext="elevated">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
<Variable name="RUNTIMEID" value="node" />
<Variable name="RUNTIMEURL" value="http://nodertncu.blob.core.windows.net/node/0.6.20.exe" />
</Environment>
</Task>
</Startup>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="tcp" port="80" />
</Endpoints>
<Runtime>
<Environment>
<Variable name="PORT">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/Endpoints/Endpoint[@name='HttpIn']/@port" />
</Variable>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
<EntryPoint>
<ProgramEntryPoint commandLine="runnode.cmd" setReadyOnProcessStart="true" />
</EntryPoint>
</Runtime>
</WorkerRole>
</ServiceDefinition>