Могу ли я использовать Silverlight 3.0 с помощью NAnt? - PullRequest
2 голосов
/ 02 октября 2009

Как добавить целевую платформу silverlight-3.0 в NAnt? Я попытался изменить файл nant.exe.config, основанный на профиле silverlight-2.0, но это не удалось во время компиляции с CS0518: Type "System.Object" not defined or imported [сообщение об ошибке переведено с польского]. Кроме того, цель silverlight-2.0, по-видимому, не устанавливает условную компиляцию «SILVERIGHT», как это делает Visual Studio, что усложняет написание многоцелевых библиотек.

Кто-нибудь здесь создает смешанные целевые решения (с библиотеками для полной .NET Framework и Silverlight)?

Ответы [ 3 ]

3 голосов
/ 04 ноября 2009

Похоже, что Ричард Б был на правильном пути с модификациями Nant.exe.config. Я добавил следующий фрагмент XML в файл конфигурации и смог установить для свойства nant.settings.currentframework значение silverlight-3.0 в моем основном файле сборки, и все работало следующим образом Шарм. (Примечание: я поместил это в файл конфигурации в строке 775 сразу после определения платформы silverlight-2.0). Надеюсь, это поможет

        <framework 
                name="silverlight-3.0" 
                family="silverlight" 
                version="3.0"
                description="Microsoft Silverlight 3.0" 
                sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}" 
                frameworkdirectory="${path::combine(installRoot, 'v3.5')}" 
                frameworkassemblydirectory="${environment::get-folder-path('ProgramFiles')}/Microsoft Silverlight/3.0.40818.0"
                clrversion="2.0.50727"
                >
                <runtime>
                    <modes>
                        <strict>
                            <environment>
                                <variable name="COMPLUS_VERSION" value="v2.0.50727" />
                            </environment>
                        </strict>
                    </modes>
                </runtime>
                <reference-assemblies basedir="${environment::get-folder-path('ProgramFiles')}/Microsoft Silverlight/3.0.40818.0">
                    <include name="agclr.dll" />
                    <include name="Microsoft.VisualBasic.dll" />
                    <include name="mscorlib.dll" />
                    <include name="System.Core.dll" />
                    <include name="System.dll" />
                    <include name="System.Silverlight.dll" />
                    <include name="System.Xml.dll" />
        <include name="System.Windows.dll" />
        <include name="System.Windows.Browser.dll" />
                </reference-assemblies>
                <task-assemblies>
                    <!-- include MS.NET version-neutral assemblies -->
                    <include name="extensions/net/neutral/**/*.dll" />
                    <!-- include MS.NET 2.0 specific assemblies -->
                    <include name="extensions/net/2.0/**/*.dll" />
                    <!-- include MS.NET specific task assembly -->
                    <include name="NAnt.MSNetTasks.dll" />
                    <!-- include MS.NET specific test assembly -->
                    <include name="NAnt.MSNet.Tests.dll" />
                    <!-- include .NET 2.0 specific assemblies -->
                    <include name="extensions/common/2.0/**/*.dll" />
                </task-assemblies>
                <tool-paths>
                    <directory name="${path::combine(sdkInstallRoot, 'bin')}"
                        if="${property::exists('sdkInstallRoot')}" />
                    <directory name="${path::combine(installRoot, 'v2.0.50727')}" />
                    <directory name="${environment::get-folder-path('ProgramFiles')}/Microsoft Silverlight/3.0.40818.0" />
                </tool-paths>
                <project>
                    <readregistry
                        property="installRoot"
                        key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                        hive="LocalMachine" />
                    <readregistry
                        property="sdkInstallRoot"
                        key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
                        hive="LocalMachine"
                        failonerror="false" />
                </project>
                <tasks>
                    <task name="csc">
                        <attribute name="noconfig">true</attribute>
                        <attribute name="nostdlib">true</attribute>
                        <attribute name="supportsnowarnlist">true</attribute>
                        <attribute name="supportswarnaserrorlist">true</attribute>
                        <attribute name="supportskeycontainer">true</attribute>
                        <attribute name="supportskeyfile">true</attribute>
                        <attribute name="supportsdelaysign">true</attribute>
                        <attribute name="supportsplatform">true</attribute>
                        <attribute name="supportslangversion">true</attribute>
                    </task>
                    <task name="vbc">
                        <attribute name="nostdlib">true</attribute>
                        <attribute name="supportsdocgeneration">true</attribute>
                        <attribute name="supportsnostdlib">true</attribute>
                        <attribute name="supportsnowarnlist">true</attribute>
                        <attribute name="supportskeycontainer">true</attribute>
                        <attribute name="supportskeyfile">true</attribute>
                        <attribute name="supportsdelaysign">true</attribute>
                        <attribute name="supportsplatform">true</attribute>
                        <attribute name="supportswarnaserrorlist">true</attribute>
                    </task>
                    <task name="jsc">
                        <attribute name="supportsplatform">true</attribute>
                    </task>
                    <task name="vjc">
                        <attribute name="supportsnowarnlist">true</attribute>
                        <attribute name="supportskeycontainer">true</attribute>
                        <attribute name="supportskeyfile">true</attribute>
                        <attribute name="supportsdelaysign">true</attribute>
                    </task>
                    <task name="resgen">
                        <attribute name="supportsassemblyreferences">true</attribute>
                        <attribute name="supportsexternalfilereferences">true</attribute>
                    </task>
                    <task name="delay-sign">
                        <attribute name="exename">sn</attribute>
                    </task>
                    <task name="license">
                        <attribute name="exename">lc</attribute>
                        <attribute name="supportsassemblyreferences">true</attribute>
                    </task>
                </tasks>
            </framework>
1 голос
/ 04 августа 2011

Вы можете скачать версию NAnt 0.91 Alpha 2, которая включает поддержку платформы net-4.0.Эта структура работает для компиляции решений с приложениями Silverlight 4.

У меня есть решение, которое включает приложение Silverlight 4 и веб-проект .NET 3.5 ASP.NET, и я использую инфраструктуру альфа-выпуска net-4.0 длякомпилировать, и это прекрасно работает.

В качестве альтернативы, все еще используя альфа-версию Nant, если вам просто нужно скомпилировать приложение SilverLight 4 с помощью Nant и вы можете получить тег фреймворка silverlight-4.0 из Nant CVS здесь. и добавьте этот тег в файл Nant.exe.config.

0 голосов
/ 04 ноября 2009

@ skolima ... может быть, вы не указываете на правильные каталоги? Мне самому это интересно, так как я работаю с SL3 и хотел бы автоматизировать сборку с помощью nAnt.

Также интересно, основываясь на некоторых других постах здесь на SO, что вам может понадобиться отредактировать файл nant.exe.config, чтобы добавить туда также «профиль» для silverlight-3.

...