使用Unity3D开发Microsoft UWP广告插件编译报错求助
Hey Brett, sorry to hear you're stuck on this compilation error with the Microsoft Ads Unity plugin. Let's break down what's going on and work through fixes step by step.
What's causing the error?
The CS0246 error means your compiler can't locate the Windows namespace. This almost always comes down to one of two issues:
- Your project isn't targeting the correct Windows 10 platform (so it doesn't have access to Windows Runtime assemblies)
- The necessary Windows-related references are missing from your build configuration
Step-by-step solutions
1. Compile the plugin within Unity (recommended)
This plugin is built for Unity, so compiling it directly in the Unity editor is the most reliable way to avoid dependency gaps:
- Create a new or use an existing Unity project
- Import the full plugin folder from the repo into your Unity project
- Open Unity's Build Settings, set the target platform to Universal Windows Platform
- Configure the UWP settings to match your needs (e.g., target SDK version)
- Try building the project from Unity—this should automatically resolve the missing
Windowsnamespace, as Unity handles all platform-specific assembly references.
2. If you need to compile via Visual Studio:
If you're set on building the standalone C# projects, adjust these settings:
- Check the target framework: Open
Microsoft.UnityPlugins.Common.csprojin a text editor, and verify the<TargetFramework>element is set to a Windows 10 SDK version (e.g.,net6.0-windows10.0.19041.0). If it's using a generic framework likenetstandard2.0, switch it to a Win10-specific target. - Add Windows Runtime references: In Visual Studio, right-click the
Microsoft.UnityPlugins.Commonproject → Add → Reference. Under the Framework tab, locate and check relevant Windows assemblies (e.g.,Windows.Foundation,Windows.UI)—these are required to access theWindowsnamespace. - Verify Windows SDK installation: Open the Visual Studio Installer, ensure the Universal Windows Platform development workload is installed, along with the Windows 10 SDK version matching your project's target.
3. Double-check the using directive in Utils.cs
Open the Utils.cs file mentioned in the error, and confirm it has the necessary using statement at the top:
using Windows; // Or more specific namespaces like: // using Windows.Foundation; // using Windows.UI.Core;
If the using line is already present, the issue is definitely missing references or incorrect project targeting.
Final notes
The repo's plugins are designed to work with Unity's platform targets, so building directly in Unity is the best way to avoid these kinds of dependency issues. If you still run into trouble, make sure you're using a Unity version compatible with the plugin (check the repo's README for version requirements) and that your Windows SDK is up to date.
内容的提问来源于stack exchange,提问作者Brett Grentell

