Visual Studio2022 において、ILMergeが失敗する Dll マージできない。

なぜILMergeにこだわっているかというと、
① Costura.Fodyでマージしようとしたときに、自己証明書を使ってアセンブリに署名すると、マージに失敗する。よってアセンブルに署名できない。
ディジタル署名しようとすると、発行で手間がかかる。
③ マージしないとdllをたくさん置かなければならなくて不愉快。

この3つの理由で、ILMergeを使いたいのだが、なぜかビルド後イベントで失敗します。。。
if $(ConfigurationName) == Release (
del /S /Q "$(TargetDir)Merge\*.*"
"C:\Test\Emocheck_Mail\packages\ILMerge.3.0.41\tools\net452\ILMerge.exe" /internalize /ndebug /targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2" /wildcards /out:"$(TargetDir)\Merge\$(TargetFileName)" "$(TargetDir)\$(TargetFileName)" "$(TargetDir)\"*.dll"
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86\signtool.exe" sign -fd sha256 -f "C:\Test\codesign\*****.pfx" /p ***** -tr http://timestamp.digicert.com -td sha256 -v "$(TargetDir)\Merge\$(TargetFileName)"
)

ビルド後イベントに記述されていたのは、↑これでしたが。。。

①ILMrege.exeが本当にそこにあるのかチェック。
②out: の出力ディレクトリの文字列がおかしくなっていないかチェック。
コマンドプロンプトでILMerge.exeを実行してみる。


特に③が有効で、失敗するとエラーが表示されるので助かります。

原因は
   
 ①ILMerge.exeの場所が間違っていた。 → ILMerge.exeの位置を確認しました。
 ②それに加えて、出力ディレクトリ、入力のパスもおかしくなっていた。→ パスを直接記述することで解消しました。
  \$(TargetFileName)のあたりで"\"が"\\"になってしまっていることがありました。???
 ③改行を入れるとうまくいかない。 → コマンドプロンプトでのILMerge.exeの実行はためになります。
 ④.netのバージョン指定に問題があり、コマンドプロンプトでILMerge.exeを実行したところ、エラーが表示されました。
   .NETFramework\v4.6.2 → .NETFramework\v4.8

これで解消しました。

Windows11 24H2 において、 パスワードを設定してない共有フォルダにアクセスできない。

パスワードを設定していないと、アクセスできない仕様に変更されたようです。

どうしてもの人は、 Windows11 Pro ならば
gpedit.msc
「コンピュータの構成」→「管理用テンプレート」→「ネットワーク」→「Lanman ワークステーション

にある、「安全ではないゲストログオンを有効にする」 を有効にするとアクセスできます。


まあ、パスワードを設定しておけ、という話だとは思いました。

Tapo C212をローカルネットで環境で、PCで映像を見られるようにする。

工場の監視カメラが一つ壊れたので、Tapo C212を購入してみました。

設定はスマホアプリから行うので、インストールしておきます。
また、DHCPで初期IPを取得しないと設定できないので、DHCPサーバを用意します。
今回は余っているRTX810を同一ネットワーク上に接続し、DHCPサーバのみ動かしました。

ip lan1 address 192.168.0.10/24
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.50-192.168.0.55/24
dhcp scope bind 1 192.168.0.90 ethernet 00:01:8e:ae:30:88
dhcp scope option 1 dns=192.168.0.11,192.168.0.12

みたいな感じです。

次に無線APにスマホを接続し、Tapo C212と同一ネットワーク上になるようにします。

これでスマホアプリから検索すると、カメラが発見されます。

あとは、スマホアプリの高度な設定から、アカウントを設定します。ユーザー名とパスワードは、パソコンからアクセスするときに使用します。
そのあと、IPアドレスを静的かつ、ローカルネット上の適正なIPに設定します。アクセスできなくなりますが、同一ネットに移動してPingすると稼働しているようです。

次はPCのソフト
 ① VLC Media Player でネットワークストリーミング。 rstp:\\ユーザー名:パスワード@192.168.*.*\Stream1 で行けます。重い場合はStream2にしましょう。
  しかしこれでは、カメラの角度を変えたりできません。
 ② iSpyを使ってみます。 カメラのタイプをONVIF Cameraで追加します。http:\\192.168.*.*\onvif\device_service のように、NetWorkAddressを設定し、
   ユーザー名とパスワードですぐに追加できました。きちんとPTZできました。(Zoomは機能がないようです。)

 ③ Ageng DVR こちらがおすすめと書いてあったので、試しましたがつながりません。よくわかりませんが、ネットワークアドレスの文字列は、これを参考に②を接続し、うまくいきました


① DHCPサーバを立てて、IPを振る
② スマホを同一ネットワークに接続
③ スマホからアカウントのユーザーとパスワードを設定
④ スマホから静的IPを設定
VLC MediaPlayer かiSpyで接続。(iSpyの接続文字列は、AgentDVRを参考にした)

ということでしたが、
以前YouSeeというメーカーの時は固定IPが振れなくて苦労しました。今回の方が全然楽でしたね。

VisualStudio アセンブリの公開キーが無効です Fodyが邪魔してビルドに失敗する

ILMergeをやめてFodyを一度導入したのですが、アセンブリに署名するとビルド失敗するので、
ILMergeに戻したのですが、
一度Fodyを導入したプロジェクトが、アンインストールしたにもかかわらず、Fodyが読み込めないというエラーを起こし、
それに従ってそのプロジェクトを参照しているプロジェクトがビルド不能になりました。
*************.csproj ファイル内にFodyの記述があり、その部分でエラーが出ているようでした。
該当プロジェクトをFody導入前のバックアップと入れ替えたところ、嘘のようにすべてのビルドが通りました。
また、該当プロジェクトは複数のプロジェクトから参照があり、影響が大きかったので、
プロジェクトをコピーして、そちらを参照するように変更しました。

該当プロジェクトはカスタムコントロールでしたので、デザイナでエラーが出てしまっていましたが、
エラーの部分を一度削除し、デザイナが復旧したところで、新しくそのコントロールを配置しなおしました。


同時に、アセンブルの公開キーが無効です、と表示されていたのでまどわされましたが、
アセンブリに署名したプロジェクトを参照していて、そのプロジェクトのビルドに失敗すると
アセンブリの公開キーが無効です、と表示されてしまうような気がします。

つまり、各プロジェクトがきちんとビルドできるか見ていけば、解消すると思われます。

VisualStudio2022 ILMerge で、同一ソリューションの、あるプロジェクトでマージが失敗する

Fordyを使うと、なぜかアセンブリに署名するとマージに失敗するので、
非推奨ながら、ILMergeをもう一度、ということでやってみましたが・・・

まず一つ、試しにやってみると、できました! よかった。

それではと、同一ソリューション上の別のプロジェクトをビルド後にILMergeを使ってマージしようとすると失敗します。
失敗コード1


ビルド後イベントに、以下のコードが書いてありました。

if $(ConfigurationName) == Release (
del /S /Q "$(TargetDir)Merge\*.*"
md "$(TargetDir)Merge"
"C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" /internalize /ndebug /targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2" /wildcards /out:"$(TargetDir)\Merge\$(TargetFileName)" "$(TargetDir)\$(TargetFileName)" "$(TargetDir)\"*.dll"
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86\signtool.exe" sign -fd sha256 -f "C:\**********.pfx" /p password -tr http://timestamp.digicert.com -td sha256 -v "$(TargetDir)\Merge\$(TargetFileName)"
)

→ とりあえず、下の2行を削ってみました。 一番下はディジタル署名、その上はマージ、その上はMergeディレクトリ内の消去と、ディレクトリ作成です。

if $(ConfigurationName) == Release (
del /S /Q "$(TargetDir)Merge\*.*"
md "$(TargetDir)Merge"
)

→ なぜかこれが失敗します。
md "$(TargetDir)Merge"
    これを消すとエラーが消えました!!

なぜディレクトリがつくれない?

 ディレクトリの権限に問題がありました。ユーザーは読み取り専用になっていましたので、
 それをフルコントロールにに変えることで解消しました。

Fody でアセンブリに署名したままマージする方法をご存じの方、教えてください!

AlmaLinux9 において Samba のフォルダにアクセスできない。CentOS7 からの乗り換え full_audit

AlmaLinux9でsambaを設定していたのですが、Windows端末からなぜかアクセスできませんでした。

アクセス許可がない可能性があります。システムに接続されたデバイスが機能していません。
??????

systemctl status smb をすると、
5月 09 19:45:22 **** smbd_audit[7847]: [2024/05/09 19:45:22.841722, 0] ../../source3/modules/vfs_full_audit.c:749(smb_full_audit_connect)
5月 09 19:45:22 **** smbd_audit[7847]: smb_full_audit_connect: Invalid success operations list. Failing connect
5月 09 19:45:22 **** smbd_audit[7847]: [2024/05/09 19:45:22.843046, 0] ../../source3/modules/vfs_full_audit.c:560(init_bitmap)
5月 09 19:45:22 **** smbd_audit[7847]: init_bitmap: Could not find opname rename
5月 09 19:45:22 **** smbd_audit[7847]: [2024/05/09 19:45:22.843064, 0] ../../source3/modules/vfs_full_audit.c:749(smb_full_audit_connect)
5月 09 19:45:22 **** smbd_audit[7847]: smb_full_audit_connect: Invalid success operations list. Failing connect
5月 09 19:45:22 **** smbd_audit[7847]: [2024/05/09 19:45:22.844915, 0] ../../source3/modules/vfs_full_audit.c:560(init_bitmap)
5月 09 19:45:22 **** smbd_audit[7847]: init_bitmap: Could not find opname rename
5月 09 19:45:22 **** smbd_audit[7847]: [2024/05/09 19:45:22.844929, 0] ../../source3/modules/vfs_full_audit.c:749(smb_full_audit_connect)
5月 09 19:45:22 **** smbd_audit[7847]: smb_full_audit_connect: Invalid success operations list. Failing connect

こんな感じでエラーが出ていました。
init_bitmap: Could not find opname rename

full_audit はsambaの詳細ログを取得するモジュールですが、rename という opname(operation name)操作名称はないと言われているようです。
調べてみると、rename mkdir rmdir unlink は廃止されたようです。

代わりに renameat mkdirat unlinkat がありました。(rmdirはない?)

なので smb.confのfull_auditの記述を変更しました。

full_audit:success = create_file connect disconnect mkdir rmdir rename read pread write pwrite sendfile unlink
full_audit:failure = create_file connect disconnect mkdir rmdir rename read pread write pwrite sendfile unlink

full_audit:success = create_file connect disconnect mkdirat renameat read pread write pwrite sendfile unlinkat
full_audit:failure = create_file connect disconnect mkdirat renameat read pread write pwrite sendfile unlinkat


これでエラーがでず、アクセスできるようになりました。

OUTLOOK 下書きメールがなぜか受信トレイに入る imap

意味が分からなかったのですが、以下の手順で、現象が再現できることがありましたので、メモしておきます。

下書きを作成します。
宛先、本文、タイトルを入れておきます。

一度閉じて下書きとして保存します。

Drafts (下書き)フォルダからもう一度メールを開き、添付ファイルを付けて、
そのまま送信ボタンを押します。
すると、100%ではありませんが、
「メッセージを変更できないため、操作を実行できません」
と、表示されて送信できないことがあります。

保存しようとしても
「他のユーザーまたは他のウィンドウで変更されたため、アイテムを保存できません。アイテムのコピーを既定のフォルダーに作成しますか?」
と表示され、はいを押すと受信トレイにメールが保存されます。

多分なのですが、Draftsフォルダがサーバと同期できないまま送信しようとして失敗し、その後デッドロックしてしまうのかな、と思いました。
送信ボタンを押す前に、上書きボタンを押して、Draftsを同期させておけば大丈夫かなと思いました。