使用附加文件创建程序集以将数据文件存储在引用程序集的相对路径中

Create Assemblies with Additional Files To Store data files in a relative path to the referenced assembly

根据关于 CREATE ASSEMBLY 语句的 U-SQL 参考: https://msdn.microsoft.com/en-us/library/azure/mt763293.aspx

当我们在商店的程序集中包含其他文件时,我们绝对可以为我们所引用的商店中的每个文件定义一个相对路径,但是,如果我们想将它定位在其他文件的相对路径中怎么办?执行时期待 dll。

示例: 从 @"/Path1/BusinessLogic.dll" 创建程序集 BusinessLogic 与 ADDITIONAL_FILES = ( @"/Path1/Path2/dataFile.xml", )

现在 BusinessLogic.dll 是 运行,它期望 dataFile.xml 位于相对目录 /Path2 中,它不会在运行时保留(从本地调试中知道),并且因此整个执行失败,如何为其他文件保留此相对路径?

正如您所引用的文档所解释的那样,其他文件正被放置到工作目录中的当前没有目录的位置:

This clause optionally specifies the name that is used for the additional file, when it is placed into the runtime working directory. The string literal has to be a valid filename (and not contain a path) or an error is raised. Note that this should the name of the file that the main assembly will be using to refer to the file or the assembly code will fail to find the file at runtime and raise an error.

因此当前不保留文件夹结构。你能做什么?

  1. file a feature request在附加文件AS子句中支持相对路径名。

  2. 您可以将文件部署到一个 ZIP 文件中,然后将它们解压缩到您的自定义程序集中以将它们放到正确的位置。