我有一个可执行文件,希望与我的 Azure Web 角色一起部署。可执行文件还需要包含一个配置文件。 我尝试在我的 Web 角色项目中添加对可执行文件项目的引用,这使得 exe 文件出现在 cspkg 的 bin 文件夹中,但不是配置文件。 我如何才能将配置文件也包含在内? 将其作为内容文件直接包含在 Web 角色项目中似乎是错误的,因为该文件是构建工件(app.config 在构建期间被重命名为 .config.exe)。
谢谢!
最佳答案
在早期的 SDK 中,他们添加了角色内容文件夹的概念,或者您可以在服务定义文件中指向的文件夹,并说出此文件夹中的任何内容,将其添加到包中并与角色一起部署。如果您查看服务定义的架构,您将看到这些都列在 web 上。和 worker角色模式。您可以手动添加它并指向本地系统上的任何位置,该目录中的任何内容都将被拾取并包含在内。
<WebRole name="SimpleWeb" vmsize="Small">
...
<Contents>
<Content destination="ConsoleApp">
<SourceDirectory path="c:\src\SimpleWebContent\ConsoleApp\BuildOutput" />
</Content>
</Contents>
</WebRole>
例如,您可以指向可执行文件的构建的输出目录,以便包含该可执行文件的构建生成的任何内容。您可以设置与应用程序根目录相关的目标目录,但棘手的部分是源目录。请注意,在上面的示例中提供了完整路径。文档说您可以使用相对路径,但我尝试了很多组合,并且行为看起来非常古怪。完整的路径确实有效。
VS SDK 工具直到 SDK 1.7 才公开这一点,而且它仍然不是很好。 Phil Hoff 在其上发表了一篇名为“Add Files to your Windows Azure Package using Role Content Folders”的博客文章。请注意,当您使用此添加文件的方法时,您将不会看到内容元素出现在服务定义中。它们在打包时被自动注入(inject)。如果您在构建过程中执行此操作,则可能不会发生,因为 VS 工具正在执行注入(inject),但公平地说,我没有尝试直接调用 cspack 来查看服务定义文件中包含的内容元素是否实际打包那些与否。另外,我发现仅添加一个新文件夹并在该文件夹下放置文件似乎不起作用。我实际上必须按名称添加文件,这似乎是错误的。我确实破解了 .ccproj 文件以在文件夹 include 上使用通配符,这确实有效,但对我来说似乎也是一种破解。
关于azure - 在 cspkg 中包含引用的程序集的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20360119/