Nano Hash - криптовалюты, майнинг, программирование

Как сделать файл XML встроенным ресурсом в библиотеке классов vNext (ASP.NET 5)?

У меня есть проект MVC 6 (vNext/ASP.NET 5) с одной библиотекой классов для DAL (уровень доступа к данным). Теперь я получаю исключение, потому что NHibernate не может найти файл сопоставления для объекта, который я пытаюсь сохранить. Я видел строгие инструкции пометить этот XML-файл сопоставления как встроенный ресурс и не копировать в выходной файл, но ни на одной из трех страниц свойств, которые мне удалось открыть для этого файла, можно ли указать это.

Я просто собираюсь перейти к плавному отображению на основе кода, но эта проблема не уникальна для моего единственного файла сопоставления NHibernate. Старая страница свойств для элементов проекта, доступная по щелчку правой кнопкой мыши в обозревателе решений, просто исчезла. Я надеюсь, что если такая вещь, как встроенный ресурс, все еще существует, то где-то еще, например project.json, мы должны указать это.


Ответы:


1

ОБНОВИТЬ

Мой предыдущий ответ больше недействителен (начиная с RC2), resource теперь помечен как устаревший. (Спасибо @Yossarian)

Правильный способ сделать это теперь использовать buildOptions/embed:

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

Вы должны использовать раздел resource в project.json, например

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

По умолчанию все файлы кода в каталоге, содержащем project.json, включаются в проект. Вы можете контролировать это с помощью разделов include/exclude в файле project.json.

В большинстве разделов файла project.json, связанных с файлами, разрешены шаблоны подстановок, которые часто называют подстановочными знаками.

Список включаемых/исключаемых свойств

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#включая-исключающие-файлы


Вы можете увидеть образец ниже:

Программа.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);
        }
    }
}

проект.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
27.12.2015
  • Спасибо, я мог бы поцеловать тебя. 27.12.2015

  • 2

    Ответ Альберто больше недействителен (начиная с RC2), resource теперь помечен как устаревший.

    Правильный способ сделать это теперь использовать buildOptions/embed:

    ...
    "buildOptions": {
      "emitEntryPoint": true,
      "embed": [ "9NLiZmx.png" ]
    },
    ...
    
    25.05.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..