因此,我尝试自动化从Unity项目构建打包应用程序的过程,并且在尝试使用MSBuild构建最终应用程序包时遇到了障碍。 在Unity中,为UWP构建时,会为项目生成一个文件夹/ UWP /。这些包含构建uwp应用程序所需的两个.dll的csharp项目。
对我来说,这些dll是在每个平台(x86,x64和ARM)的文件夹中生成的,但这是我遇到障碍的地方。为了构建应用程序包,我使用MSBuild(我也尝试使用Developer Command Prompt - 相同的结果)和命令。
MSBuild "{Project}.csproj" /p:Configuration=Debug;AppxBundle=Always;AppxBundlePlatforms="x64";OutputPath="AppxPackages"
这会引发错误
" C:\用户\ {用户} \桌面\输出\ {项目} \ {项目}的.csproj" (默认目标)(1) - > (BeforeResolveReferences目标) - >
C:\ Users \ {User} \ Desktop \ Output \ {Project} \ {Project} .csproj(319,5):错误MSB3030:无法复制文件" {path-to-unity-project} \ UWP \汇编CSHARP \ BIN \ AnyCPU \调试\未处理\汇编CSharp.dll"因为没找到。
这里发生的事情是MSBuild试图在文件夹中找到一个dll;#34; AnyCPU"根本就不存在。
有什么方法可以告诉MSBuild单独构建每个平台而不是寻找合并的dll,还是我错误地使用MSBuild?
答案 0 :(得分:0)
即使我无法弄清楚为什么Debug配置在错误的目录中查找程序集,感谢@ Leo-MSFT,我能够修复正在发生的错误。
首先,我在游戏项目中调用MSBuild,这需要是生成的解决方案。
其次,我使用Release配置,而不是使用Debug配置。
最后,我对构建生成的内容与Visual Studio的构建(Right Click-> Store-> Create App Packages ...)相比感到困惑。当VS生成.appxbundle时,使用MSBuild将为所选的每个平台单独生成,例如game_x64.appx,game_ARM.appx等等。
您可以使用makeappx tool自行创建捆绑包。