Просто ответив на запрос на подачу. Во-первых, использование Build Action = Content фактически не влияет на сборку. Это свойство элемента проекта, которое может считывать другие инструменты. Например, построитель установки использует его, чтобы выяснить, что файл должен быть включен в программу установки и развернут на машине пользователя.
Использование Build Action = Embedded Resource, как указано в вышеприведенном вопросе, - это надзор OP. Это фактически инструктирует MSBuild вставлять файл в качестве ресурса в манифест сборки, используя Assembly.GetManifestResourceStream() извлекает его во время выполнения.
Но из комментария к награде это ясно видно, что вы тоже этого не хотите. Резерв должен просто скопировать файл на целевой компьютер. Где он будет сидеть терпеливо, пока вам это не понадобится. Примечательно, что это не в любом случае изменяет размер пакета, который пользователь загружает из Магазина. Он занимает такое же пространство, будь то внутри сборки или отдельный файл в пакете.
Так что поцарапайте это как способ продвижения вперед.
Это действительно имеет значение во время выполнения, вся сборка попадает в виртуальную память при загрузке. Таким образом, сборка с ресурсом займет больше места виртуальной памяти. Но слово «виртуальный» очень важно, он требует очень мало ресурсов телефона. Всего несколько байтов в таблицах отображения страниц для каждого 4096 байт в ресурсе. Вы не начинаете платить за виртуальную память, пока не получите доступ к ней. В этот момент операционная система телефона должна фактически превратить ее из виртуальной в физическую память. Или, другими словами, загрузите байты ресурса в ОЗУ. Это не отличается от загрузки файла, он также загружается в ОЗУ при его открытии.
Так что поцарапайте это как способ продвижения вперед.
У нас заканчиваются веские причины, чтобы на самом деле это сделать, Microsoft, безусловно, выбрала метод по умолчанию для обработки ресурсов как наилучшего. Это. Но иногда у вас есть, чтобы развернуть контент как файл, просто потому, что он слишком велик. Тот, который нажимает 2 гигабайта или более, потребляет всю виртуальную память в 32-разрядной операционной системе, поэтому ее нельзя сопоставить с виртуальной машиной. Программа просто не сможет запускаться. Это не та программа, с которой пользователь телефона будет очень доволен.
Затем вам необходимо сосредоточиться на фазе сборки упаковки решения, что является последним шагом при создании телефонного приложения. Тот, в котором все проекты в решении были скомпилированы, и создается один-единственный файл, который загружен в Магазин и загружен пользователем.
И да, там проблема, MSBuild недостаточно умен, чтобы увидеть библиотеку PCL, используя этот ресурс. Действие сборки = Содержимое должно быть достаточно хорошим, как и для установщика, но это не работает. Он будет только пакет DLL, а не ресурс. Было сделано предположение, что вы вложите его, лучшее решение.
Что вам нужно сделать, это переопределить манифест пакета. Описан в this MSDN article. Очень, очень уродливый, вы смотрите на пустой мигающий курсор. В этом случае у меня заканчиваются хорошие советы, это было сделано, чтобы не делать этого.
Я пытаюсь прочитать файл с наращиванием действий, установленных в содержание. – Martin