Visual studio 在普通VisualStudio2012项目中瞄准XNA框架

Visual studio 在普通VisualStudio2012项目中瞄准XNA框架,visual-studio,f#,xna,visual-studio-2012,xna-4.0,Visual Studio,F#,Xna,Visual Studio 2012,Xna 4.0,我有一个cxna主机项目,还有一个F客户机项目,它将包含我的所有功能。它不会生成,因为F项目引用了mscorlib.dll和System.dll,XNA项目与实际错误不一致——好吧,这确实是一个警告,在我看来应该是一个错误——在文章的底部。我如何告诉F项目针对Xbox 360的实际XNA平台 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3268: The pr

我有一个cxna主机项目,还有一个F客户机项目,它将包含我的所有功能。它不会生成,因为F项目引用了mscorlib.dll和System.dll,XNA项目与实际错误不一致——好吧,这确实是一个警告,在我看来应该是一个错误——在文章的底部。我如何告诉F项目针对Xbox 360的实际XNA平台

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3268: The primary reference "\\vmware-host\Shared Folders\Projects\FSharp\Whirlygigs\Whirlygigs.Lib\bin\Debug\Whirlygigs.Lib.dll" could not be resolved because it has an indirect dependency on the framework assembly "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0,Profile=Client". To resolve this problem, either remove the reference "\\vmware-host\Shared Folders\Projects\FSharp\Whirlygigs\Whirlygigs.Lib\bin\Debug\Whirlygigs.Lib.dll" or retarget your application to a framework version which contains "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=***".
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5): warning MSB3268: The primary reference "\\vmware-host\Shared Folders\Projects\FSharp\Whirlygigs\Whirlygigs.Lib\bin\Debug\Whirlygigs.Lib.dll" could not be resolved because it has an indirect dependency on the framework assembly "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0,Profile=Client". To resolve this problem, either remove the reference "\\vmware-host\Shared Folders\Projects\FSharp\Whirlygigs\Whirlygigs.Lib\bin\Debug\Whirlygigs.Lib.dll" or retarget your application to a framework version which contains "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=***".

您遇到的问题是,您的一个项目的目标是.NET Framework mscorlib系统的Windows版本,而您的一个项目的目标是该框架的Xbox 360版本。而且,基本上,您不能将针对不同核心框架的程序集链接在一起

我猜您的F项目的目标是Windows版本的程序集。您需要做的是让您的F项目以Xbox 360 reference程序集为目标

请注意,我自己从来没有做过这件事,所以我的答案只是列出了一些你可以尝试的事情

作为参考,这些参考程序集默认安装在C:\Program Files x86\Microsoft XNA\XNA Game Studio\v4.0\References\Xbox360中\

首先,您可以尝试使用可移植类库。关于这件事,我听到的报道褒贬不一

我可能会使用一些手动MSBuild技巧来实现这一点。Visual Studio项目文件是一个MSBuild文件,它是XML。您可以在文本编辑器中打开它并使用它。您会注意到,XNA项目导入以下文件:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" />
然后手动设置每个引用的路径。所以你要改变这一点:

<Reference Include="mscorlib" />
为此:

<Reference Include="mscorlib">
  <HintPath>C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Xbox360\mscorlib.dll</HintPath>
</Reference>

诸如此类的参考资料。我以前成功地使用了最后一种方法,手动更改了目标框架。

您遇到的问题是,您的一个项目的目标是.NET framework mscorlib系统的Windows版本,而您的一个项目的目标是Xbox 360版本的框架。而且,基本上,您不能将针对不同核心框架的程序集链接在一起

我猜您的F项目的目标是Windows版本的程序集。您需要做的是让您的F项目以Xbox 360 reference程序集为目标

请注意,我自己从来没有做过这件事,所以我的答案只是列出了一些你可以尝试的事情

作为参考,这些参考程序集默认安装在C:\Program Files x86\Microsoft XNA\XNA Game Studio\v4.0\References\Xbox360中\

首先,您可以尝试使用可移植类库。关于这件事,我听到的报道褒贬不一

我可能会使用一些手动MSBuild技巧来实现这一点。Visual Studio项目文件是一个MSBuild文件,它是XML。您可以在文本编辑器中打开它并使用它。您会注意到,XNA项目导入以下文件:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\Microsoft.Xna.GameStudio.targets" />
然后手动设置每个引用的路径。所以你要改变这一点:

<Reference Include="mscorlib" />
为此:

<Reference Include="mscorlib">
  <HintPath>C:\Program Files (x86)\Microsoft XNA\XNA Game Studio\v4.0\References\Xbox360\mscorlib.dll</HintPath>
</Reference>

诸如此类的参考资料。我以前成功地使用了最后一种方法,手动更改了目标框架。

您是否尝试过更改您目标的.Net版本-我认为应该是3.5而不是4您是否尝试过将.Net framework 4作为目标而不是.Net framework 4客户端配置文件?在project Properties的“应用程序”选项卡上,我刚刚尝试了列出的所有.NET Framework 2.0、3.0、3.0客户端配置文件、4、4.0客户端配置文件和4.5,但它们都会产生完全相同的警告。我不知道该怎么做…您是否尝试过更改目标.Net的版本-我认为应该是3.5而不是4您是否尝试过将目标定为.Net Framework 4而不是.Net Framework 4客户端配置文件?在project Properties的“应用程序”选项卡上,我刚刚尝试了列出的所有.NET Framework 2.0、3.0、3.0客户端配置文件、4、4.0客户端配置文件和4.5,但它们都会产生完全相同的警告。我不知道该怎么办…非常感谢你的回答;但我将无法再测试一两周,因为我的VMWare试用版在您响应的第二天就过期了,我一点也买不起它。对于迟来的回答也很抱歉,但再次感谢!:我知道,这真的很晚了,但不管怎么说,我只需添加我在cxna项目中发现的与XNA有关的任何属性,就已经非常接近了,而且它确实有效!它的目标似乎是XNA compact框架,因此我在VS 2012中添加了所有引用,但看起来F需要一个完整的框架类——System.Net中的WebRequest。错误如下:编译单元系统中的模块/命名空间“System.Net”不包括命名空间、模块或类型“WebRequest”。有什么想法吗?顺便说一句:我没有强迫你,我使用了你的第二种方法,还有一些。嗯,我发现,有人有同样的问题…谢谢你的回答;
但我将无法再测试一两周,因为我的VMWare试用版在您响应的第二天就过期了,我一点也买不起它。对于迟来的回答也很抱歉,但再次感谢!:我知道,这真的很晚了,但不管怎么说,我只需添加我在cxna项目中发现的与XNA有关的任何属性,就已经非常接近了,而且它确实有效!它的目标似乎是XNA compact框架,因此我在VS 2012中添加了所有引用,但看起来F需要一个完整的框架类——System.Net中的WebRequest。错误如下:编译单元系统中的模块/命名空间“System.Net”不包括命名空间、模块或类型“WebRequest”。有什么想法吗?顺便说一句:我并没有强迫它,我使用了你的第二种方法,还有一些。嗯,我发现,有人有同样的问题。。。