在cspkg中包含引用的程序集配置

时间:2013-12-03 19:40:08

标签: azure deployment

我有一个可执行文件,我希望与Azure Web角色一起部署。可执行文件具有需要包含的配置文件。 我尝试在我的web角色项目中添加对可执行文件项目的引用,这使得exe文件出现在cspkg的bin文件夹中,但不出现在配置文件中。 如何获取包含的配置文件? 将它直接包含在Web角色项目中作为内容文件似乎是错误的,因为此文件是构建工件(app.config在构建期间被重命名为.config.exe)。

谢谢!

1 个答案:

答案 0 :(得分:2)

在早期的SDK中,他们添加了角色内容文件夹的概念,或者您可以在服务定义文件中指出的文件夹,并在此文件夹中说出任何内容,将其添加到包中并使用该角色进行部署。如果查看服务定义的模式,您将在webworker角色模式中看到这些模式。您可以手动添加它并指向本地系统上的任何位置,该目录中的任何内容都将被选中并包含在内。

  <WebRole name="SimpleWeb" vmsize="Small">

    ...

    <Contents>
      <Content destination="ConsoleApp">
          <SourceDirectory path="c:\src\SimpleWebContent\ConsoleApp\BuildOutput" />
      </Content>
    </Contents>
  </WebRole>

例如,您可以指向可执行文件的构建的输出目录,以便包含构建为该可执行文件生成的任何内容。您可以设置与应用程序根目录相关的目标目录,但棘手的部分是源目录。请注意,在上面的示例中,提供了完整路径。文档说你可以使用相对路径,但我尝试了很多组合,行为似乎非常古怪。完整的路径确实有效。

VS SDK工具直到SDK 1.7才公开它,但它仍然不是很好。菲尔霍夫做了一篇名为“Add Files to your Windows Azure Package using Role Content Folders”的博客文章。请注意,使用此方法添加文件时,您将看不到内容元素出现在服务定义中。它们在包装时自动注入。如果你这样做是构建过程的一部分,这可能不会发生,因为VS工具正在进行注入,但公平地说我没有尝试直接调用cspack来查看服务定义文件中是否包含了实际打包的内容元素那些与否。此外,我发现只是添加一个新文件夹,只是在该文件夹下有文件似乎不起作用。我不得不在那里按名称添加文件,这似乎是错误的。我确实破解了.ccproj文件,在文件夹include上使用了一个通配符,这确实有用,但对我来说似乎也是一个黑客攻击。