我的 Web 项目的根目录中有一个简单的文件(与 Web 辅助角色相关)。该文件名为 Startup.cmd
。该文件包含以下行:dir > directory.txt
。当我从命令行运行它时,它可以正确执行,并将目录内容列表输出到名为 directory.txt
的文件中,正如您所期望的那样。同样,ECHO Write this line to file > output.txt
行似乎也不起作用。
在我的 Azure 云服务项目的 ServiceDefinition.csdef
中,我有以下几行:
<WebRole name="Website" vmsize="Small">
<Startup>
<Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple"></Task>
</Startup>
....
</WebRole>
我相信它正在查找该文件,因为我尝试更改路径,但它会抛出找不到该文件的构建错误。问题是,当我在调试到 Azure 调试环境后检查 /bin/
目录时,我看到 Startup.cmd
(我将其设置为 Copy Always
),但我没有看到directory.txt
。我不确定是否有其他方法可以确认它是否正确执行。
最佳答案
我发现以下 MSDN 文章很有用:http://msdn.microsoft.com/en-us/library/hh180155.aspx .
因此,我对 Startup.cmd
文件进行了一些更改。我将命令更改为:
ECHO The current version is %MyVersionNumber% >> "%TEMP%\StartupLog.txt" 2>&1
EXIT /B 0
但是,这似乎并未将输出放入系统的临时目录中:C:\Users\username\AppData\Local\Temp
。我假设这是因为 Azure 计算模拟器使用了我不知道的不同临时目录。
我将 Startup.cmd
更改为:
ECHO The current version is %MyVersionNumber% >> "c:\temp\StartupLog.txt" 2>&1
EXIT /B 0
并将我的配置更新为:
<WebRole name="Website" vmsize="Small">
<Startup>
<Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple">
<Environment>
<Variable name="MyVersionNumber" value="1.0.0.0" />
<Variable name="ComputeEmulatorRunning">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
</Task>
</Startup>
...
</WebRole>
这似乎在启动调试器时将文件写入C:\temp\
。
关于azure - Microsoft Azure 启动任务未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23695837/