Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Úprava .dll súboru pomocou dnSpy

Zdravím

Snažím sa upraviť jeden mód do hry (.dll súbor, hra je robená cez Unity 3D) no dnSpy vypisuje chybu pri kompilácii "... is inaccessible due to its protection level".
Kód som však zatiaľ nijako neupravoval, čiže táto chyba vyskakuje už od začiatku bez akýchkoľvek úprav.

Vedeli by ste mi prosím poradiť ako by som chybu mohol opraviť?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Nejspíš se snažíš přistoupit k něčemu co je protected nebo private mimo samotnou třídu či její potom…
Wikan 06.03.2024 06:38
Wikan
Skúšal som to aj cez Visual Studio, no výsledok bol úplne ten istý. Skúsil som aj DotPeek.
sakulmore 06.03.2024 10:34
sakulmore
Bez konkrétního kódu se nejspíš rady nedočkáš.
Wikan 06.03.2024 11:06
Wikan
Snažím sa prakticky len upraviť hodnotu, nič viac, nič menej. Hodnotu upravujem v: AlterraWays.dll -…
sakulmore 06.03.2024 12:51
sakulmore
Co je classa CraftData.Ingredient? Když ji změníš třeba na public, začne to fungovat?
Wikan 06.03.2024 14:28
Wikan
Práve že zmeniť sa to vôbec nedá. Aj keď to zmením a skompilujem, vráti sa to do pôvodného stavu. A…
sakulmore 06.03.2024 14:35
sakulmore
To se mi nějak nezdá. To prostě musí jít.
Wikan 06.03.2024 14:36
Wikan
https://youtu.be/uDKLqvlc85A
sakulmore 06.03.2024 14:51
sakulmore
Dekompiluj si to do složky a pak edituj ve VS. Pak se ti tam rozhodně nebude měnit nic pod rukama.
Wikan 06.03.2024 14:57
Wikan
Veď tak som to urobil :D .
sakulmore 06.03.2024 15:34
sakulmore
Na tom videu to rozhodně ve VS neděláš. nový
Wikan 06.03.2024 15:42
Wikan
Vo videu nie, no robil som to aj vo VS včera. Alebo mám natočiť aj video ako to robím vo VS????? nový
sakulmore 06.03.2024 16:16
sakulmore
Možná by bylo rychlejší sem dát odkaz na tu knihovnu. nový
Wikan 06.03.2024 16:37
Wikan
Ospravedlňujem sa za neskoršiu odpoveď no bolela ma hlava tak som si išiel ľahnúť. Tu je link na mó… nový
sakulmore 06.03.2024 21:44
sakulmore
Tak můj tip je, že to dekompiluje špatně. Nebo spíš kompilát při kompilaci použil nějakou optimaliza… nový
Wikan 07.03.2024 09:43
Wikan
dnSpy nepodporuje dekompiláciu knihovien .NET frameworku novšieho ako ver.4.6 a knihovne z VS 15,tie… nový
audax mobile 07.03.2024 09:49
audax mobile
Vieš mi nejaké dekompiléry odporučiť? Zatiaľ poznám len dnSpy a dotPeek. V oboch prípadoch to ukazov… nový
sakulmore 07.03.2024 10:33
sakulmore
Ještě je ILSpy, ale tam je to to samé. poslední
Wikan 07.03.2024 10:47
Wikan

Snažím sa prakticky len upraviť hodnotu, nič viac, nič menej.
Hodnotu upravujem v: AlterraWays.dll -> AlterraWays.Food -> FruitNutrietBlock.

Konkrétne upravujem tento riadok:


cloneTemplate.ModifyPrefab = delegate(GameObject go)
{
  Eatable eatable = go.EnsureComponent<Eatable>();
  eatable.foodValue = 68f;
};

na:


cloneTemplate.ModifyPrefab = delegate(GameObject go)
{
  Eatable eatable = go.EnsureComponent<Eatable>();
  eatable.foodValue = 100f;
  eatable.waterValue = 100f;
};

Presné chyby:


'CraftData.Ingredient' is inaccessible due to its protection level
'List<CraftData.Ingredient>.Add(CraftData.Ingredient)' is inaccessible due to its protection level
'CraftData.Ingredient' is inaccessible due to its protection level
'List<CraftData.Ingredient>.Add(CraftData.Ingredient)' is inaccessible due to its protection level

Toto je tá časť, ktorá (asi) spôsobuje danú chybu: (Assembly-CSharp.dll ->CraftData)


private sealed class Ingredients : List<CraftData.Ingredient>
    {
        // Token: 0x0600484C RID: 18508 RVA: 0x00176BEC File Offset: 0x00174DEC
        public void Add(TechType techType, int amount = 1)
        {
            base.Add(new CraftData.Ingredient(techType, amount));
        }
    }

Taktiež Assembly-CSharp.dll sa nedá nijako upravovať (aspoň mne to teda nešlo ani cez dnSpy, ani cez VS).

Tak můj tip je, že to dekompiluje špatně. Nebo spíš kompilát při kompilaci použil nějakou optimalizaci, kterou dekompilátor není schopen obnovit do původní podoby.
Řešení to určitě má, ale bude s tím spousta práce - dekompilovat Assembly-CSharp.dll, upravit ty třídy na public, upravit vše ostatní, aby to bylo možné znovu zkompilovat. A pak to samé zopakovat s AlterraWays.dll. A kdo ví, jeslti se při tom neobjeví ještě něco dalšího.

dnSpy nepodporuje dekompiláciu knihovien .NET frameworku novšieho ako ver.4.6 a knihovne z VS 15,tie ďalšie použité utility sú pre .NET framework 3.2-3.6,dotyčný program má knihovne z verzie 4.8.1/5.x.x a VS 19-22,na tie si musíš zadovážiť novšie dekompilery a utility,inak sa dopracuješ len k novým chybám....

Zpět do poradny Odpovědět na původní otázku Nahoru