Powershellの「Publish-AzureServiceProject」コマンドレットを使用してNode.jsパッケージをAzureに公開しようとしています。
デフォルトのosFamily="2"(Windows Server 2008 R2)では期待どおりに機能しますが、osFamily = "3"(Windows Server 2012)を使用して公開すると、次のエラーが発生します。
アップロードされたパッケージに必要なNetFx35という名前の機能は、展開用に選択されたOS*では使用できません。
明らかに私は.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>