2017-05-01 87 views
1

因此,我試圖自動化從Unity項目構建打包應用程序的過程,並且在嘗試使用MSBuild構建最終應用程序包時遇到了障礙。 在Unity中,當您爲UWP構建時,會爲該項目生成一個文件夾/ UWP /。這些包含用於構建uwp應用程序所需的兩個.dll的csharp項目。如何讓MSBuild使用Unity3D項目生成的UWP解決方案?

對我來說,這些dll是在每個平臺(x86,x64和ARM)的文件夾中生成的,但這是我遇到障礙的地方。爲了構建應用程序包,我使用MSBuild(我也嘗試使用Developer Command Prompt - 同樣的結果)。

MSBuild "{Project}.csproj" /p:Configuration=Debug;AppxBundle=Always;AppxBundlePlatforms="x64";OutputPath="AppxPackages" 

這引發錯誤

「C:\用戶\ {用戶} \桌面\輸出\ {項目} \ {項目}的.csproj」(缺省目標)(1) - > (BeforeResolveReferences target) - >
C:\ Users \ {User} \ Desktop \ Output \ {Project} \ {Project} .csproj(319,5):錯誤MSB3030:無法複製文件「{path-to -unity-project} \ UWP \ Assembly-CSharp \ bin \ AnyCPU \ Debug \ Unprocessed \ Assembly-CSharp.dll「,因爲找不到它。

這裏發生的事情是,MSBuild正試圖找到一個根本不存在的文件夾「AnyCPU」中的DLL。

有沒有什麼辦法可以告訴MSBuild單獨構建每個平臺而不是尋找合併的dll,還是我錯誤地使用了MSBuild?

+0

因此,這兩個DLL可以使用相關的項目文件成功構建,但是在生成最終應用程序包時遇到問題,我是否正確?使用第三個項目文件構建應用程序包還是應該如何工作?你能否成功地從Visual Studio生成應用程序包? –

+0

正確。 Unity創建UWP項目的方式是在UWP目錄中生成兩個名爲「Assembly-CSharp-firstpass」和「Assembly-CSharp」的組裝項目。還會生成您所選位置的第三個項目。在我的情況下.../Desktop/Output/...第三個項目對兩個裝配項目都有項目引用。該項目也是具有應用程序清單和所有UWP必需文件的項目。 我通過Visual Studio製作這些包沒有任何問題(右鍵單擊 - >存儲 - >創建應用程序包)。嘗試使用MSBuild本身時出現問題。 – Yamil

+0

您是否嘗試在發佈模式下構建它?只需命令行:MSBuild mysolution.sln/p:Configuration = Release; AppxBundle = Always; AppxBundlePlatforms =「x64」 –

回答

0

即使我無法弄清楚爲什麼Debug配置在錯誤的目錄中查找程序集,感謝@ Leo-MSFT,我能夠修復發生的錯誤。

首先,我在遊戲項目中調用了MSBuild,而這需要成爲生成的解決方案。其次,我使用了Release配置,而不是使用Debug配置。

最後,我被構建生成的內容與Visual Studio的構建(右鍵單擊 - >存儲 - >創建應用程序包...)相混淆。當VS生成一個.appxbundle時,使用MSBuild將爲每個選定的平臺單獨生成,比如game_x64.appx,game_ARM.appx等等。

您可以使用makeappx tool自己創建該包。

相關問題