Venkite užmaskuoti rinkinius, kurie naudoja klases System.Xml vardų srityje Dotfuscator, kurie sukels klaidų

Puslapis atnaujintas :
Puslapio sukūrimo data :

Simptomų tikrinimas

Sukurkite naują projektą. Tai gali būti "Windows Form" arba WPF, bet čia mes kuriame WPF programą.

Parašykite kodą, kad naudotumėte klases, priklausančias System.Xml vardų sričiai. Čia mes naudojame "XmlDocument" ir "XmlNode" klases taip.

using System.Windows;
using System.Xml;

namespace DotfuscatorTest
{
  /// <summary>MainWindow.xaml の相互作用ロジック</;summary>
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();

      XmlDocument doc = new XmlDocument();
      doc.LoadXml("<a></a>");
      XmlNode node = doc.FirstChild;
    }
  }
}

System.Xml 名前空間のクラスを使用したコード

Sukūrę meniu įrankius pasirinkite "PreEmptive Dotfuscator and Analytics" ir paleiskite jį.

PreEmptive Dotfuscator and Analytics を起動

Įtraukite .exe sukurtą failą ir sukurkite jį.

.exe ファイルを追加

Tada pasirodo šis klaidos pranešimas ir kūrimas nepavyksta.

Tai nėra valdomas modulis (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Kūrimo klaida.

ビルドエラー

Bandžiau išsiaiškinti, kas sukėlė šią klaidą, bet neradau aiškaus atsakymo. Atsižvelgiant į tai, kad angliškoje svetainėje nėra informacijos ir kad System.Xml.dll kelias turi "en", galite atspėti, kad tai yra unikali klaida, išskyrus anglišką aplinką.

Sprendimo būdas

Nors projektas nurodo "Windows" klientą System.Xml.dll, kai kuriate naudodami "Dotfuscator", jis nurodo surinkimą "Windows Phone System.Xml.dll todėl priverstinai nukopijavome System.Xml vietoje.dll Norėčiau išvengti kūrimo klaidų, nurodydamas tai.

Atidarykite projekto nuorodas, dešiniuoju pelės mygtuku spustelėkite System.Xml ir pasirinkite Ypatybės.

プロパティを選択

Pakeiskite vietinės kopijos elementą į True.

ローカル コピーの項目を True に変更

Kai kuriate šią būseną, "System.Xml.dll" išvedama kartu su .exe failu.

System.Xml.dll が出力される

Atidarykite "Dotfuscator" ir pridėkite "System.Xml.dll" kartu su mazgu, kurį norite užmaskuoti. Tai užmaskuoja surinkimą taip, kad jis nebūtų susijęs su įdiegtu sistemos DLL ir matytų vietinį DLL.

Atkreipkite dėmesį, kad ypatybė System.Xml.dll tikrina bibliotekos režimą. Be šio patikrinimo System.Xml.dll taip pat gali būti užmaskuotas, o jo nurodyti klasių pavadinimai gali keistis. Žinoma, jei klasės pavadinimas pasikeis, negalėsite normaliai paleisti programos.

System.Xml.dll を追加

Jei statote šioje būsenoje, jis bus sėkmingai baigtas.

ビルド成功

Galite būti tikri, kad užmaskuota programa paleidžiama savaime be problemų.

アプリケーションを起動

Čia pateiktas turinys yra šiek tiek keblus sprendimas, todėl negalime garantuoti, kad jis bus veiksmingas net ir atitinkamai sukonstruotiems agregatams. Net jei kūrimas yra sėkmingas ir gali būti pradėtas, negalima paneigti galimybės, kad jis kris atliekant konkretų procesą, todėl prieš išleidžiant tinkamai patikrinkite operaciją.

Net jei tai neapsiriboja System.Xml vardų sritimi, užmaskavimas yra jautri funkcija, kurios reikia norint užtikrinti, kad būtų išlaikytas nuoseklumas. Visų pirma, naudojant refleksiją, gali būti paveikti su įvesties / išvesties funkcija susiję dalykai, tokie kaip failų įvesties / išvesties funkcija ir sąveika su išorinėmis API, todėl būkite atsargūs.