「CLR パッケージガイドライン」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(他言語へのリンクを追加)
 
(同じ利用者による、間の1版が非表示)
16行目: 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時点における最新版

このドキュメントでは Arch Linux における共通言語ランタイム (.NET) プロジェクトのパッケージスタンダードを定義しています。複数の環境で利用できる実用的な CLR ランダムは Mono しか存在しないため、このスタンダードでは Mono を使用します。CLR プログラムの多くは Microsoft .NET で開発されているため、P/Invoke コールや Microsoft のデジタル著作権管理 (DRM) API など .NET でしか使えない機能が利用されている場合 Mono では動作しません。しかしながら、Wine と組み合わせることで動作させることができる可能性があります。詳しくは Wine パッケージガイドラインを見てください。

パッケージング

  • depends には mono を追加してください。
  • archany に設定してください。Mono は64ビットアセンブリのコンパイルをサポートしていません。
  • !stripoptions に追加してください。
  • パッケージがライブラリ (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"
}