【发布时间】:2017-12-31 02:59:20
【问题描述】:
我通过“Add\New Item”添加了两个页面并选择了“Content Page”。
XAML 和后面的代码没有分组,.cs 应该依赖于 XAML。
这是 VS 2017 中的一个已知问题吗? 我花了很多时间更新工具却发现这不起作用....我希望这是我本地安装的问题。
有人可以确认一下吗?
【问题讨论】:
标签: xaml xamarin xamarin.forms visual-studio-2017
我通过“Add\New Item”添加了两个页面并选择了“Content Page”。
XAML 和后面的代码没有分组,.cs 应该依赖于 XAML。
这是 VS 2017 中的一个已知问题吗? 我花了很多时间更新工具却发现这不起作用....我希望这是我本地安装的问题。
有人可以确认一下吗?
【问题讨论】:
标签: xaml xamarin xamarin.forms visual-studio-2017
这是由 .csproj 文件在您切换到 .NET Standard 时的新工作方式引起的。新的做法不是包含每个文件并描述每个文件应如何嵌套,而是仅显式包含您想要忽略的文件,并使用通配符来嵌套所有类似类型的文件。
因此,要解决此问题,您可以使用我从 this 站点找到的以下方法,只需将以下内容添加到您的 .NET Standard 项目的 .csproj 文件中并删除任何显式包含行是遗留下来的,或者是您在将内容移至 .NET Standard 后添加的:
<ItemGroup>
<!-- https://bugzilla.xamarin.com/show_bug.cgi?id=55591 -->
<None Remove="**\*.xaml" />
<Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
<EmbeddedResource Include="**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" />
</ItemGroup>
所以上面说的是:
Build Action设置为Compile,并使它们依赖于所添加文件的文件名(不带扩展名)李>
Build Action 设置为EmbeddedResource 并将它们的Custom Tool 属性设置为MSBuild:UpdateDesignTimeXaml。这复制了旧的 .csproj 文件描述每个文件的方式,但只是使用通配符来表示每个文件都不需要列出。
如果您还使用 ReSharper,一个错误导致智能感知无法工作,可以在 here 找到错误报告。提到的一种解决方案是将 XAML 智能感知处理交给 Visual Studio 而不是 ReShaper(尽管这并没有完全解决我的问题):
【讨论】: