「CLR パッケージガイドライン」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「Category:パッケージ開発 en:CLR package guidelines ru:CLR package guidelines {{Package Guidelines}} このドキュメントでは Arch Linux におけ...」) |
(→サンプル PKGBUILD: 同期) |
||
(同じ利用者による、間の2版が非表示) | |||
1行目: | 1行目: | ||
[[Category:パッケージ開発]] |
[[Category:パッケージ開発]] |
||
[[en:CLR package guidelines]] |
[[en:CLR package guidelines]] |
||
+ | [[pt:CLR package guidelines]] |
||
[[ru:CLR package guidelines]] |
[[ru:CLR package guidelines]] |
||
+ | [[zh-hans:CLR package guidelines]] |
||
{{Package Guidelines}} |
{{Package Guidelines}} |
||
14行目: | 16行目: | ||
#!/bin/sh |
#!/bin/sh |
||
mono foo.exe $@ |
mono foo.exe $@ |
||
− | ===署名済みアセンブリ=== |
+ | === 署名済みアセンブリ === |
+ | |||
− | パッケージを GAC にインストールする場合、署名済みのキーファイルが必要です。存在しない場合、次のコマンドで生成できます: {{ic|sn -k 1024 Foo.snk}}。そして、次のコマンドでアセンブリを分解してください: {{ic|<nowiki>monodis Foo.dll --output=Foo.il</nowiki>}}。その後、次のコマンドで再構築します: {{ic|ilasm /dll /key:Foo.snk Foo.il}}。 |
||
+ | パッケージを GAC にインストールする場合、署名済みのキーファイルが必要です。存在しない場合、次のコマンドで生成できます: {{ic|sn -k 1024 Foo.snk}} そして、次のコマンドでアセンブリを分解してください: {{ic|<nowiki>monodis Foo.dll --output=Foo.il</nowiki>}} その後、次のコマンドで再構築します: {{ic|ilasm /dll /key:Foo.snk Foo.il}} |
||
+ | |||
+ | == サンプル PKGBUILD == |
||
+ | |||
+ | === xbuild === |
||
+ | |||
+ | ==== 未署名の DLL ==== |
||
− | ==サンプル PKGBUILD== |
||
− | ===xbuild=== |
||
{{bc|<nowiki> |
{{bc|<nowiki> |
||
# Maintainer: yourname <yourmail> |
# Maintainer: yourname <yourmail> |
2023年11月4日 (土) 21:40時点における最新版
パッケージ作成ガイドライン
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
このドキュメントでは Arch Linux における共通言語ランタイム (.NET) プロジェクトのパッケージスタンダードを定義しています。複数の環境で利用できる実用的な CLR ランダムは Mono しか存在しないため、このスタンダードでは Mono を使用します。CLR プログラムの多くは Microsoft .NET で開発されているため、P/Invoke コールや Microsoft のデジタル著作権管理 (DRM) API など .NET でしか使えない機能が利用されている場合 Mono では動作しません。しかしながら、Wine と組み合わせることで動作させることができる可能性があります。詳しくは Wine パッケージガイドラインを見てください。
パッケージング
depends
には mono を追加してください。arch
はany
に設定してください。Mono は64ビットアセンブリのコンパイルをサポートしていません。!strip
をoptions
に追加してください。- パッケージがライブラリ (DLL) の場合、Mono のグローバルアセンブリキャッシュ (GAC) にインストールすることを考慮してください。
- アセンブリがコンパイル済みでプログラムデバッグデータベースファイル (Foo.dll.pdb) が付属する場合、次のコマンドで変換してください:
pdb2mdb Foo.dll
。 - パッケージに実行可能ファイル (EXE) が含まれる場合、
/usr/bin
に以下のようなシェルスクリプトをインストールしてください:
#!/bin/sh mono foo.exe $@
署名済みアセンブリ
パッケージを GAC にインストールする場合、署名済みのキーファイルが必要です。存在しない場合、次のコマンドで生成できます: sn -k 1024 Foo.snk
そして、次のコマンドでアセンブリを分解してください: monodis Foo.dll --output=Foo.il
その後、次のコマンドで再構築します: ilasm /dll /key:Foo.snk Foo.il
サンプル PKGBUILD
xbuild
未署名の DLL
# Maintainer: yourname <yourmail> pkgname=foo pkgver=1.0 pkgrel=1 pkgdesc="Fantabulous library for .Net" arch=('any') url="http://www.foo.bar" license=('GPL') depends=('mono') options=('!strip') source=("http://www.foo.bar/foobar.tar.gz") md5sums=('4736ac4f34fd9a41fa0197eac23bbc24') build() { cd "${srcdir}/foobar" xbuild Foo.sln # if the package is unsigned, do the following: cd "/bin/x86/Debug" monodis Foo.dll --output=Foo.il sn -k 1024 Foo.snk ilasm /dll /key:Foo.snk Foo.il } package() { cd "${srcdir}/foobar/bin/x86/Debug" install -Dm644 Foo.dll "$pkgdir/usr/lib/foobar/Foo.dll" install -Dm644 Foo.dll.mdb "$pkgdir/usr/lib/foobar/Foo.dll.mdb" # Register assembly into Mono's GAC gacutil -i Foo.dll -root "$pkgdir/usr/lib" }