https://wiki.archlinux.org/api.php?action=feedcontributions&user=52TH&feedformat=atomArchWiki - User contributions [en]2024-03-28T14:28:47ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=CLR_package_guidelines_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=441516CLR package guidelines (Русский)2016-07-15T09:56:25Z<p>52TH: Created page with "Category:Package development {{Package guidelines}} Этот документ определяет стандарты для создания пакетов Common Langua..."</p>
<hr />
<div>[[Category:Package development]]<br />
{{Package guidelines}}<br />
<br />
Этот документ определяет стандарты для создания пакетов Common Language Runtime (.NET) для Arch Linux. На текущий момент только [[Mono]] способен обеспечить эффективный и работоспособный запуск CLR в смешанных системах. Будьте внимательны - большинство CLR программ разработанных в среде Microsoft .NET могут не запустится в Mono, так как содержат платформозависимые .NET-факторы: вызовы P/Invoke и Microsoft DRM API (цифровые средства защиты авторских прав). Однако, в связке с [[Wine]] (версия 1.5.6 и выше), у Вас есть некоторая вероятность запустить ваше приложение. Для получения информации смотрите [[Wine PKGBUILD Guidelines]].<br />
<br />
==Подготовка к сборке пакетов==<br />
* Всегда добавляйте {{Pkg|mono}} в {{ic|depends}}<br />
* Всегда выставляйте {{ic|arch}} в {{ic|any}}. Mono не поддерживает сборку (запуск) 64-битных приложений.<br />
* Всегда добавляйте {{ic|!strip}} в {{ic|options}}<br />
* Если Вы собираете библиотеку (DLL), которая будет установлена в Mono's global assembly cache (GAC), добавте GAS в зависимости (к пакету) .<br />
* Если приложение/библиотека поставляется с отладочной базой данных (program debug database file, Foo.dll.pdb), переконвертируйте её: {{ic|pdb2mdb Foo.dll}}<br />
* Если Вы собираете приложение (EXE), убедитесь в том, что добавили скрипт для запуска в {{ic|/usr/bin}}. Пример скрипта:<br />
#!/bin/sh<br />
mono foo.exe $@<br />
<br />
===Подписанные сборки===<br />
Если пакет будет установлен в GAC, убедитесь, что у Вас есть ключ для подписи. Если нет, то сгенерируйте его: {{ic|sn -k 1024 Foo.snk}}.<br />
Затем Вам нужно дизасембелировать пакет: {{ic|<nowiki>monodis Foo.dll --output=Foo.il</nowiki>}}. После чего соберать снова, но уже с подписью: {{ic|ilasm /dll /key:Foo.snk Foo.il}}<br />
<br />
<br />
==Примеры PKGBUILDs==<br />
<br />
===xbuild===<br />
====Неподписанные DLL====<br />
{{bc|<nowiki><br />
# Maintainer: yourname <yourmail><br />
pkgname=foo<br />
pkgver=1.0<br />
pkgrel=1<br />
pkgdesc="Fantabulous library for .Net"<br />
arch=('any')<br />
url="http://www.foo.bar"<br />
license=('GPL')<br />
depends=('mono')<br />
options=('!strip')<br />
source=("http://www.foo.bar/foobar.tar.gz")<br />
md5sums=('4736ac4f34fd9a41fa0197eac23bbc24')<br />
<br />
build() {<br />
cd "${srcdir}/foobar"<br />
<br />
xbuild Foo.sln<br />
<br />
# if the package is unsigned, do the following:<br />
cd "/bin/x86/Debug"<br />
monodis Foo.dll --output=Foo.il<br />
sn -k 1024 Foo.snk<br />
ilasm /dll /key:Foo.snk Foo.il<br />
}<br />
<br />
package() {<br />
cd "${srcdir}/foobar/bin/x86/Debug"<br />
<br />
install -Dm644 Foo.dll "$pkgdir/usr/lib/foobar/Foo.dll"<br />
install -Dm644 Foo.dll.mdb "$pkgdir/usr/lib/foobar/Foo.dll.mdb"<br />
<br />
# Register assembly into Mono's GAC<br />
gacutil -i Foo.dll -root "$pkgdir/usr/lib"<br />
}<br />
</nowiki>}}<br />
<br />
===NAnt===<br />
===Prebuild===</div>52TH