none
是否 VS 2013 express for Windows 與 for Web 兩個版本的 MSBuild 相衝? RRS feed

  • 一般討論

  • 其實我不確定是否是兩個相衝造成的,

    一開始我是安裝 VS 2013 express for Windows with Update 3,發佈到App store 後,因為想用 azure 寫一個相應的網頁,所以又安裝了 for Web with update 4 的版本。後來因為小孩想看DVD,所以安裝Cyberlink PowerDVD 時,它自己安裝了 C++ 2005 Redistributable。

    昨天發現發布出去的 App 廣告出不來,想說Debug看看,結果出現如下的錯誤:

    1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\AppxPackage\Microsoft.AppXPackage.Targets(852,9): error MSB4216: Could not run the "GenerateResource" task because MSBuild could not create or connect to a task host with runtime "CLR4" and architecture "x64".  Please ensure that (1) the requested runtime and/or architecture are available on the machine, and (2) that the required executable "C:\Program Files (x86)\MSBuild\12.0\bin\amd64\MSBuild.exe" exists and can be run.
    1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\AppxPackage\Microsoft.AppXPackage.Targets(866,13): error MSB4028: The "GenerateResource" task's outputs could not be retrieved from the "FilesWritten" parameter. Object does not match target type.

    試了半天,想說將for Windows 的版本也改成 Update 4 也許有幫助,結果沒有用,就算將目錄名由 Bin 改成 bin 也沒有用(因為有看到 MSBuild.exe這個檔案在Bin\amd64\裡)。

    不過,for Web with Update 4 裡的 Build 倒是還是能動,所以我才猜想可能兩個相衝了,請問有人知道原因與解決法嗎?懇請賜教。謝謝。

    ps:我用的是英文版的,不曉得有沒有影響。

    2015年2月20日 下午 11:01

所有回覆

  • 社群版改為全功能免費,有要試看看嗎

    http://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年2月23日 上午 11:50
  • 您說得對,我問得很不精確,因為整個出問題的過程就如我上面那篇所述,而我充其量也只使用VS將近一年,說實在的,對我而言,還有很多要學習。若可以的話,其實我也想寫 VS 的 extension,因為有些功能我想試著實作看看,不過,貪多勿得,還是乖乖地先會寫一些基本的程式好了。 ^_^  所以,很抱歉,目前的我不知道怎麼問得很精確,若您願意教我,我很樂意學習。

    在發問前,其實我有bing 過,不過,查了半天,沒看到適當的答案,只好試看看在此發問,看看能否找到解答。在發問後,我有發現您所說的 VS for community version,這樣的確好多了,不用同時灌很多VS在同一台電腦裡,只是,在我

    1. uninstall VS for windows + VS for web

    2. install VS for community

    後,問題還是存在,不過,我發現若我將 solution platform 由 x64 改為 x86 (因為用了Bing & synthesizer,我不能使用 Any CPU,那它們是不工作的),它就能 compile 了;不過,在此之前, x64 是能compile 的,而我發布的APP裡包含有x64的部分,所以,等到下次 update 時,很可能又要掛在那裏,build 不起來。

    到時地解決法可能只好再重新安裝一次整個 windows 8.1 +VS community 一次了,但想到這,就覺得很昏,因為安裝完 windows 8.1 (去年九月左右買的,很抱歉,我看了一下光碟裡的資料,沒看到它哪個Build,所以只好不精確地回答了)後得經過 update 才能安裝 VS community,而這些Update執行下來得用掉將近半天去下載,若可以的話,可否建議 Microsoft 寫個 page control or a flyout 讓我們決定是否將這些 updates 用到的檔案存到我們想存的目錄,然後要抓取 updates 用的檔案前也可選擇由哪執行安裝。 若是 security 的問題的話,大不了學 App store 的作法,傳個認證碼給我們,再加上 hash number checking 不就好了。當然,Microsoft 網頁上有提供 update檔們可以下載,但是用起來的感覺很像在使用 Linux自行安裝一樣讓人不安,若您要說我技巧不夠,那我也無話可說了。

    簡而言之,身為初學者的我,已經盡量交代清楚了,若您覺得哪裡還是沒有好好描述,懇請賜教,這樣我就又多學一步了。感恩。

    祝 平安喜樂


    • 已編輯 Young-Chung Hsue 2015年2月24日 上午 09:19 印象中的日期與實際日期有出入
    2015年2月24日 上午 09:15
  • ...

    你不知道簽名檔是各論壇的基本功能嗎?


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年2月24日 上午 11:51
  • 看到簽名檔的殺傷力了 可怕!
    2015年2月25日 上午 12:42
  • 這個 connect 上的討論和你的問題有點像:

    https://connect.microsoft.com/VisualStudio/feedback/details/758772/generateresource-fails-for-net-3-5-application-when-net-4-5-has-been-installed

    Key:
    The cause of the bug is that MSbuild 4.0 (appropriately) invokes the 3.5 resgen.exe in this case, since you are targeting 3.5, and resgen.exe was incorrectly marked as MSIL. (Resgen should have had separate 32 bit and 64 bit versions. This was partly fixed for the 4.0+ resgen.exe BTW) Because of this, on a 64 bit OS, resgen.exe will run as a 64 bit process. When processing a .resx with references to user types (typically happens when you are using a designer such as the winforms designer) resgen instantiates them; if the type requires 32 bit, it's now running in a 64 bit process so it fails. As you can imagine, this is a pretty rare situation. However we obviously want the build to succeed.


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2015年2月25日 上午 12:52
    版主
  • 謝謝小朱的快速回覆,您的blog裡有很多東西都是我還不會的東西,有空會上去看。^_^

    不過,我想問題可能不在 .net 3.5,因為我也用BlankUniversalApp 的範本(.net 4.5.1.0)來編譯當作測試,也會出現同樣的錯誤,可惜我不知道怎麼正確下 MSBuild 的 command line command,不然就可以設法貼上它到底發生甚麼事了。目前是下 "MSBuild My.proj /ds" 會在 "於 Microsoft.Build.CommandLine.MSBuildApp.Main()" 後丟出例外,然後進入 VS 設法 Debug 它,不過可能因為沒有 .net 的原始檔(目前我還不懂怎樣不破壞VS的生態而將.net原始檔也加入debug的行列),因此不曉得怎麼再除錯下去。

    回應前前一篇: 嗯,我知道那是簽名檔的部分,不過,我是真的很想知道怎樣問得清楚,精彩。這段學習過程中,我發現以前有的人發的問我看都看不懂,現在有的若我找到解決法,我也會回應一下,畢竟他們正遭逢我一樣的痛苦。所以,問得精采與否其實有時與程度(經驗值?)有關。所以啦,若一個小學生問您微積分,那肯定問的哩哩辣啦,但我們還是可以設法針對他想知道的部分引導他不是嗎?有興趣總比懶得理還來得好吧。

    祝 平安喜樂

    2015年2月26日 下午 02:39
  • 本站各版置頂公告基本上都有提問的說明。

    張貼文章應注意事項及應提供資訊

    另外這篇翻譯文是廣受各國資深網友認同的內容,左邊是整篇各段,這邊貼的連結是如何提問:

    https://code.google.com/p/smartquestions/wiki/WhenYouAsk


    T.L. Cheng

    2015年3月7日 上午 09:59
    版主