首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Xamarin.Android项目上的Dotfuscator引发错误

Xamarin.Android项目上的Dotfuscator引发错误
EN

Stack Overflow用户
提问于 2017-10-03 08:26:48
回答 4查看 1.3K关注 0票数 4

我按照here中描述的步骤将Dotfuscator集成到我的Xamarin.Android项目中,但在构建该项目时,我得到了以下错误:

"_DotfuscatorXamarin_DetermineDefaultInputsTask“任务意外失败。2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):错误MSB4018: System.NullReferenceException:未将对象引用设置为对象的实例。2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error error : at InlineCode._DotfuscatorXamarin_DetermineDefaultInputsTask.Execute() in \path\to\AppData\Local\Temp\eruovv3u.0.cs:line 106 2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018: at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018: at InlineCode._DotfuscatorXamarin_DetermineDefaultInputsTask.Execute()in\path\to\AppData\Local\Temp\eruovv3u.0.cs:line 106 2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):MSB4018 MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):MSB4018 MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):MSB4018 MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018:at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()2>\path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):error MSB4018Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext()

我在网上看了又看,但似乎没有人有这个问题。我认为这个问题与在第一次构建时生成默认配置文件有关。有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-10-04 23:23:42

更新:此问题已在较新版本的Dotfuscator中修复。有关免费的和商业许可的,请参阅详细说明。最初的答案如下。

完全披露:我是PreEmptive解决方案的Dotfuscator的开发人员,并以该角色回答这个问题。

您说得对,问题出在目标文件(PreEmptive.Dotfuscator.Xamarin.targets)中的默认配置文件生成--很抱歉。具体地说,构建集成试图发现项目引用,但期望使用经典的MSBuild项目格式,而不是.NET标准使用的新的最小格式。

您可以按如下方式解决此问题:

  1. 在目标文件中,找到_DotfuscatorXamarinConfigTemplateLines属性并将其值(在CDATA节中)复制到项目文件所在目录中名为DotfuscatorConfig.xml的新文件(或为项目文件中的DotfuscatorXamarinConfigFileName属性提供的任何值)中。
  2. 在Visual Studio中,在要保护的配置(例如,AnyCPU|Release)中生成项目一次。它会出错,因为新的配置文件还没有任何输入程序集,但是通过现在的构建,我们可以将这些程序集放在正确的位置,以便配置Dotfuscator.
  3. Open Dotfuscator的用户界面。从Visual Studio中打开
    • For Community Edition,然后选择PreEmptive保护- Dotfuscator专业版,然后从Start Menu.

运行Dotfuscator专业版

在用户界面中,文件|打开在步骤1中创建的文件。

  1. 在输入屏幕上,单击“添加输入”按钮(在社区版中是一个绿色加号,在
  2. 中是一个打开文件夹的图标),然后单击项目目录中的obj\Release\DotfuscatorXamarin\dfin,然后选择要保护的程序集。
    • Release替换为您在步骤2中生成的配置的相应目录。
    • 您应该选择与解决方案中的项目相对应的程序集,而不是选择第三方程序集和属于framework.

的程序集

  1. 将配置属性保存到项目属性编辑器中。在社区版中,转到生成设置屏幕并选择项目属性选项卡。在专业版中,
    • 转到设置选项卡,然后选择设置>项目属性screen.

使用在步骤2中构建的配置的相应目录,添加以下项目属性(说明for Community Editionfor Professional Edition):

  • 属性名称InDir、value obj\Release\DotfuscatorXamarin\dfout
  • Property name InDir、value obj\Release\DotfuscatorXamarin\dfout
  • Property name OutDir、value D68>。请注意,磁盘yet.

上不存在D69和D70指向的目录

  1. 保存配置文件。
  2. 返回到输入屏幕,选择输入并单击铅笔图标。将程序集的路径从绝对路径编辑为${configdir}\${InDir}\AssemblyName.dll,用AssemblyName.dll替换程序集的实际名称和扩展名。对每个输入重复配置文件(并将其提交到Visual Studio中的assembly.
  3. Save control).
  4. Rebuild项目。构建集成将使用您的配置文件,而不是尝试生成新文件。
票数 12
EN

Stack Overflow用户

发布于 2018-07-06 12:28:47

在乔奇妙的解决方案之上,我最终根据https://www.preemptive.com/dotfuscator/pro/userguide/en/getting_started_xamarin.html#pctoc-setup上的说明将一个值从true更改为false,以使我的安卓解决方案能够构建/运行。

代码语言:javascript
复制
    <DotfuscatorXamarinGenerateNewConfigFile>false</DotfuscatorXamarinGenerateNewConfigFile>
票数 2
EN

Stack Overflow用户

发布于 2017-11-30 23:30:35

根据this user guide的说法,我一直在Xamarin.Android项目中配置Dotfuscator Community Edition。我还遇到了以下构建错误(与@AxiomaticNexus几乎相同):

代码语言:javascript
复制
    Error       The "_DotfuscatorXamarin_DetermineDefaultInputsTask" task failed unexpectedly.
System.NullReferenceException: Object reference not set to an instance of an object.
   at InlineCode._DotfuscatorXamarin_DetermineDefaultInputsTask.Execute() in c:\Users\user\AppData\Local\Temp\wqhfhbsk.0.cs:line 106
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() eKey.Droid  C:\VSProjects\dotFuscatorTest\PreEmptive.Dotfuscator.Xamarin.targets    570

我已经用@Joe Sewell的Full Disclosure修复了这个问题。我希望PreEmptive解决方案将尽快实现修复版本!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46535531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档