我按照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()
我在网上看了又看,但似乎没有人有这个问题。我认为这个问题与在第一次构建时生成默认配置文件有关。有什么想法吗?
发布于 2017-10-04 23:23:42
更新:此问题已在较新版本的Dotfuscator中修复。有关免费的和商业许可的,请参阅详细说明。最初的答案如下。
完全披露:我是PreEmptive解决方案的Dotfuscator的开发人员,并以该角色回答这个问题。
您说得对,问题出在目标文件(PreEmptive.Dotfuscator.Xamarin.targets
)中的默认配置文件生成--很抱歉。具体地说,构建集成试图发现项目引用,但期望使用经典的MSBuild项目格式,而不是.NET标准使用的新的最小格式。
您可以按如下方式解决此问题:
_DotfuscatorXamarinConfigTemplateLines
属性并将其值(在CDATA节中)复制到项目文件所在目录中名为DotfuscatorConfig.xml
的新文件(或为项目文件中的DotfuscatorXamarinConfigFileName
属性提供的任何值)中。运行Dotfuscator专业版
在用户界面中,文件|打开在步骤1中创建的文件。
obj\Release\DotfuscatorXamarin\dfin
,然后选择要保护的程序集。Release
替换为您在步骤2中生成的配置的相应目录。的程序集
使用在步骤2中构建的配置的相应目录,添加以下项目属性(说明for Community Edition和for Professional Edition):
InDir
、value obj\Release\DotfuscatorXamarin\dfout
InDir
、value obj\Release\DotfuscatorXamarin\dfout
OutDir
、value D68>。请注意,磁盘yet.上不存在D69和D70指向的目录
${configdir}\${InDir}\AssemblyName.dll
,用AssemblyName.dll
替换程序集的实际名称和扩展名。对每个输入重复配置文件(并将其提交到Visual Studio中的assembly.发布于 2018-07-06 12:28:47
在乔奇妙的解决方案之上,我最终根据https://www.preemptive.com/dotfuscator/pro/userguide/en/getting_started_xamarin.html#pctoc-setup上的说明将一个值从true更改为false,以使我的安卓解决方案能够构建/运行。
<DotfuscatorXamarinGenerateNewConfigFile>false</DotfuscatorXamarinGenerateNewConfigFile>
发布于 2017-11-30 23:30:35
根据this user guide的说法,我一直在Xamarin.Android项目中配置Dotfuscator Community Edition。我还遇到了以下构建错误(与@AxiomaticNexus几乎相同):
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解决方案将尽快实现修复版本!
https://stackoverflow.com/questions/46535531
复制相似问题