当前位置:  开发笔记 > 编程语言 > 正文

如何将XML文件作为vNext(ASP.NET 5)类库中的嵌入式资源?

如何解决《如何将XML文件作为vNext(ASP.NET5)类库中的嵌入式资源?》经验,为你挑选了2个好方法。

我有一个MVC 6(vNext/ASP.NET 5)项目,有一个用于DAL(数据访问层)的类库.现在我得到一个例外,因为NHibernate找不到我试图坚持的实体的映射文件.我已经看到严格的指令将此XML映射文件标记为嵌入式资源而不是复制到输出,但是在我设法为此文件打开的三个属性页中,没有任何一个可以规定这一点.

我只是转向基于代码的流畅映射,但这个问题并不是我的一个NHibernate映射文件所特有的.在解决方案资源管理器中右键单击的项目项的旧属性页面就消失了.我希望如果嵌入式资源这样的东西仍然存在,那么project.json我们必须在其他地方指定它.



1> Alberto Mont..:

UPDATE

我以前的答案不再有效(自RC2起),resource现在标记为已弃用.(谢谢@Yossarian)

现在使用的正确方法是buildOptions/embed:

...
"buildOptions": {
  "emitEntryPoint": true,
  "embed": [ "9NLiZmx.png" ]
},
...

你必须使用project.json中的section 资源,就像这样

{
  "compile": "*.cs",
  "resource": [
    "mapping.xml"
  ]
}

默认情况下,包含project.json的目录中的所有代码文件都包含在项目中.您可以使用project.json的include/exclude部分来控制它.

处理文件的project.json文件的大多数部分都允许使用通常称为通配符的glob模式.

包含/排除属性列表

name                  default value
===============================================
compile                   
compileExclude            
content               **/*   
contentExclude            
preprocess            compiler/preprocess/**/*.cs   
preprocessExclude         
resource              compiler/preprocess/resources/**/*   
resourceExclude           
shared                compiler/shared/**/*.cs   
sharedExclude             
publishExclude        bin/**;obj/**;**/.*/**   
exclude              

更多信息:http://docs.asp.net/en/latest/dnx/projects.html#including-excluding-files


您可以在下面看到示例:

Program.cs中

using System;
using System.Reflection;

namespace ConsoleApp1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var assemblyName = new AssemblyName("ConsoleApp1");
            var resources = string.Join(Environment.NewLine, Assembly.Load(assemblyName).GetManifestResourceNames());
            Console.WriteLine("List of Manifest Resource Names");
            Console.WriteLine("======================");
            Console.WriteLine(resources);
        }
    }
}

project.json

{
  "version": "1.0.0-*",
  "description": "ConsoleApp1 Console Application",
  "authors": [ "Alberto Monteiro" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "compilationOptions": {
    "emitEntryPoint": true
  },
  "resource": "9NLiZmx.png",
  "dependencies": {
  },

  "commands": {
    "ConsoleApp1": "ConsoleApp1"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Console": "4.0.0-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Threading": "4.0.11-beta-23516",
        "System.IO": "4.0.11-beta-23516",
        "System.IO.FileSystem": "4.0.1-beta-23225",
        "System.Reflection": "4.1.0-beta-23516"
      }
    }
  }
}

产量

List of Manifest Resource Names
======================
ConsoleApp1.9NLiZmx.png



2> nothrow..:

Alberto的答案不再有效(自RC2起),resource现在标记为已弃用.

现在使用的正确方法是buildOptions/embed:

...
"buildOptions": {
  "emitEntryPoint": true,
  "embed": [ "9NLiZmx.png" ]
},
...

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有