【问题标题】:Xamarin Forms + VS2017 + NETStandard: XAML and code behind are not groupedXamarin Forms + VS2017 + NETStandard:XAML 和后面的代码未分组
【发布时间】:2017-12-31 02:59:20
【问题描述】:

我通过“Add\New Item”添加了两个页面并选择了“Content Page”。

XAML 和后面的代码没有分组,.cs 应该依赖于 XAML。

这是 VS 2017 中的一个已知问题吗? 我花了很多时间更新工具却发现这不起作用....我希望这是我本地安装的问题。

有人可以确认一下吗?

【问题讨论】:

    标签: xaml xamarin xamarin.forms visual-studio-2017


    【解决方案1】:

    这是由 .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>
    

    所以上面说的是:

    • 删除所有 .xaml 文件
    • 将所有.xaml.cs文件添加到项目中,将它们的Build Action设置为Compile,并使它们依赖于所添加文件的文件名(不带扩展名)李>
    • 最后将所有 .xaml 文件添加到项目中,将它们的Build Action 设置为EmbeddedResource 并将它们的Custom Tool 属性设置为MSBuild:UpdateDesignTimeXaml。

    这复制了旧的 .csproj 文件描述每个文件的方式,但只是使用通配符来表示每个文件都不需要列出。

    如果您还使用 ReSharper,一个错误导致智能感知无法工作,可以在 here 找到错误报告。提到的一种解决方案是将 XAML 智能感知处理交给 Visual Studio 而不是 ReShaper(尽管这并没有完全解决我的问题):

    【讨论】:

    • 非常感谢!!我没有迁移到 NETStandard,我从头开始创建了一个项目。让我编辑 .csproj,看看它是如何工作的。
    • @MagnusMio 这篇文章是在 .Net 标准支持比现在更糟糕的时候发布的。您现在发现的任何错误都可能与不同的东西有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多