我的Web项目的根目录中有一个简单的文件(与Web worker角色绑定)。该文件名为Startup.cmd
。该文件包含以下行:dir > directory.txt
。当我从命令行运行它时,它会正确执行,并将目录内容列表输出到您期望的名为directory.txt
的文件。同样,行ECHO Write this line to file > output.txt
似乎也不起作用。
在我的Azure Cloud Service项目的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
),但我看不到{{1} }。我不确定另一种确认它是否正确执行的方法。
答案 0 :(得分:0)
我发现以下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 Compute Emulator使用了我不知道的不同临时目录。
我将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\
。