DevOps Сборка с использованием ресурсов локализации - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь создать решение с использованием Azure DevOps и опубликовать результат в виде пакета nuGet в частном репозитории.

Проект в решении содержит локализованный ресурс Language.resx, содержащий тексты на английском языке.,Локализованные версии: Language.da.resx, Language.se.resx и Language.no.resx, но ни одна из них не включена в полученный пакет nuget.

Я попытался добавить /target:Resource,Compile в свойство аргументов MSBuild задачи Build Solutionв DevOps, но это просто привело к ошибке, говорящей о том, что цель 'Resource' не была найдена.

Я уверен, что просто упускаю что-то очевидное, но я просто не вижу этого.Я должен быть близок, пакет nuGet публикуется в конце концов и работает, за исключением ресурсов локализации.

Я проверил полученный пакет nuGet и извлек dll из рассматриваемого проекта.Открытие dll в .Net Reflector 10 показывает мне, что оно действительно содержит текстовые строки на английском, но не на других языках.

Надеюсь, что другие здесь могут мне помочь: -)

1 Ответ

0 голосов
/ 01 октября 2018

Похоже, локализованные ресурсы действительно были созданы по умолчанию, но не видны в .Net Reflector 10.Причина в том, что они не были включены в пакет nuGet в задаче «Упаковка».

Небольшое исследование привело меня к добавлению файла .nuspec в проект.В этом файле я указал соответствующие файлы и т. Д., И теперь они включены в пакет nuGet.

Хотя это и не идеально, поскольку список файлов и зависимостей теперь нужно поддерживать вручную.Но я не смог найти способ сделать его динамичным.Однако большинство деталей в файле .nuspec можно было сделать динамическими, используя переменные, относящиеся к файлу AssemblyInfo.cs.

В результате я получил следующее содержимое в файле .nuspec (некоторые детали очищеныхотя, так как это отображается публично) Примечание: слово Release в атрибуте src раздела files является именем моего профиля сборки.Ваше решение может использовать другое имя.

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
    <metadata>
        <!-- The identifier that must be unique within the hosting gallery -->
        <id>$id$</id>

        <!-- The package version number that is used when resolving dependencies -->
        <version>$version$</version>

        <!-- Authors contain text that appears directly on the gallery -->
        <authors>$author$</authors>

        <!-- 
            Owners are typically nuget.org identities that allow gallery
            users to easily find other packages by the same owners.  
        -->
        <owners>$author$</owners>

        <!-- License and project URLs provide links for the gallery -->
        <!--<licenseUrl></licenseUrl>-->
        <!--<projectUrl></projectUrl>-->

        <!-- The icon is used in Visual Studio's package manager UI -->
        <!--<iconUrl></iconUrl>-->

        <!-- 
            If true, this value prompts the user to accept the license when
            installing the package. 
        -->
        <requireLicenseAcceptance>false</requireLicenseAcceptance>

        <!-- Any details about this particular release -->
        <!--<releaseNotes></releaseNotes>-->

        <!-- 
            The description can be used in package manager UI. Note that the
            nuget.org gallery uses information you add in the portal. 
            Must be included, and must never be empty.
        -->
        <description>$description$</description>

        <!-- Copyright information -->
        <copyright>$copyright$</copyright>

        <!-- Tags appear in the gallery and can be used for tag searches -->
        <!--<tags></tags>-->

        <!-- Dependencies are automatically installed when the package is installed -->
        <dependencies>
            <dependency id="MicrosoftOfficeCore" version="15.0.0" />
            <dependency id="Microsoft.Office.Interop.Word" version="15.0.4797.1003" />
        </dependencies>
    </metadata>

    <!-- Files to include in the package -->
    <files>
        <file src="bin\Release\$id$.dll" target="lib\net462\$id$.dll" />
        <file src="bin\Release\da\$id$.resources.dll" target="lib\net462\da\$id$.resources.dll" />
        <file src="bin\Release\no\$id$.resources.dll" target="lib\net462\no\$id$.resources.dll" />
        <file src="bin\Release\sv\$id$.resources.dll" target="lib\net462\sv\$id$.resources.dll" />
    </files>
</package>
...