cad.net WPF的MarkupExtension接口引用问题,System.Xaml.dll的引用问题

很不幸的是,在cad上面敲WPF的话,您无可避免地需要将工程设置成 .NET standard 项目,

因为WPF需要判断不同的 net 版本,而传统的 .NET Framework 无法判断....

而很幸福的是,不需要改代码,只需要学习写.csporj文件就可以了...这相当于写一个xml吧...

而我们为什么要判断 net 版本呢?因为写 WPF 存在一个版本差,这个版本差分别是低版本的 net3.5 和高版本的 net4.0,

因为 net4.0 写了很多很丰富的函数.....

而WPF的MarkupExtension接口在 net3.5 和 net4.0 之间有差异,这个差异需要在 net4.0(或以上) 引用一个 System.Xaml.dll 来解决.

我们一般会在这里写上引用

但是因为要判断 net 的版本,所以需要写在这里:

这样就可以在不同的net版本上面单独加载dll了...

完整的.csporj

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFrameworks>NET35;NET40;NET45</TargetFrameworks>
        <OutputPath>..\..\K01.惊惊连盒\JnFox</OutputPath>
    </PropertyGroup>

    <PropertyGroup Condition="‘$(Configuration)|$(TargetFramework)|$(Platform)‘==‘Debug|net35|AnyCPU‘">
        <DefineConstants>DEBUG;TRACE</DefineConstants>
    </PropertyGroup>

    <PropertyGroup Condition="‘$(Configuration)|$(TargetFramework)|$(Platform)‘==‘Release|net40|AnyCPU‘">
        <DefineConstants>DEBUG;TRACE</DefineConstants>
    </PropertyGroup>

    <PropertyGroup Condition="‘$(Configuration)|$(TargetFramework)|$(Platform)‘==‘Release|net45|AnyCPU‘">
        <DefineConstants>DEBUG;TRACE</DefineConstants>
    </PropertyGroup>

    <ItemGroup Condition="‘$(TargetFramework)‘ == ‘net35‘">
        <PackageReference Include="CommonServiceLocator">
            <Version>1.0.0</Version>
        </PackageReference>
        <PackageReference Include="MvvmLightLibs">
            <Version>5.4.1.1</Version>
        </PackageReference>
    </ItemGroup>

    <ItemGroup Condition="‘$(TargetFramework)‘ == ‘net40‘">
        <PackageReference Include="CommonServiceLocator">
            <Version>2.0.2</Version>
        </PackageReference>
        <PackageReference Include="MvvmLightLibs">
            <Version>5.4.1.1</Version>
        </PackageReference>

        <!--net环境加载特定的dll-->
        <Reference Include="System.Xaml">
            <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xaml.dll</HintPath>
        </Reference>
    </ItemGroup>

    <ItemGroup Condition="‘$(TargetFramework)‘ == ‘net45‘">
        <PackageReference Include="CommonServiceLocator">
            <Version>2.0.2</Version>
        </PackageReference>
        <PackageReference Include="MvvmLightLibs">
            <Version>5.4.1.1</Version>
        </PackageReference> 

        <!--net环境加载特定的dll-->
        <Reference Include="System.Xaml">
            <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Xaml.dll</HintPath>
        </Reference>

        <PackageReference Include="System.Runtime">
            <Version>4.0.0</Version>
        </PackageReference>
        <Reference Include="mscorlib.dll" />
    </ItemGroup>

    <ItemGroup>
        <Reference Include="PresentationCore" />
        <Reference Include="PresentationFramework" />
        <Reference Include="System.Xml" />
        <Reference Include="WindowsBase" />
        <Reference Include="PresentationFramework" />
        <Reference Include="System.Xml" />
    </ItemGroup>

</Project>

美哉

原文地址:https://www.cnblogs.com/JJBox/p/12677496.html

时间: 2024-10-07 15:03:31

cad.net WPF的MarkupExtension接口引用问题,System.Xaml.dll的引用问题的相关文章

找不到编译动态表达式的一种或多种类型。是否缺少对microsoft.CSharp.dll和System.core.dll的引用”

xlbook1.Worksheets[1]这块下面显示红色的波浪号,并有提示“找不到编译动态表达式的一种或多种类型.是否缺少对microsoft.CSharp.dll和System.core.dll的引用”. 解决办法是将引入的COM对象(miscrosoft excel 12.0 object library),属性里的嵌入互操作类型改为Fasle

Visual Studio使用技巧笔记(引用程序集自动复制dll到引用项目目录)

copy /y $(TargetPath) $(SolutionDir)\[您项目引用dll文件的目录]\$(TargetFileName) 例如:copy /y $(TargetPath) $(SolutionDir)\Dynamic.CallEntryTests\dlls\$(TargetFileName)

wpf资源嵌套,一个资源引用另外一个资源,被引用的资源应该声明在前面

在wpf的XAML的Window.Resources中,一个资源引用另外一个资源,出现如下错误: “错误 1 “{DependencyProperty.UnsetValue}”不是 Setter 上“System.Windows.FrameworkElement.FocusVisualStyle”属性的有效值”. 如下图: 虽然错误列表里出现如图的错误,但是程序缺依然可以运行,只是在设计器里看不了UI视图(界面). 出现这个错误的原因是: 被引用的资源的声明在引用它的资源的后面了(或者是没有声明

WPF使用IDataErrorInfo接口进行数据校验 - 简书

原文:WPF使用IDataErrorInfo接口进行数据校验 - 简书 class ValidationBindableBase : BindableBase, IDataErrorInfo { public string this[string columnName] { get { if (_errorMap.ContainsKey(columnName)) { var error = _errorMap[columnName]; _errorMap.Remove(columnName);

WPF中实现拍照功能(利用“WPFMediaKit.dll”)

开始先展示下效果图: -------------------------------下面记录步骤:------------------------------------------------------ 下载“WPFMediaKit.dll”程序开发包,用在项目中添加引用: 在WPF窗口引入并命名: xmlns:wpfMedia="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit" 在界面用到一个V

未能添加对***.dll的引用 问题解决方法

这个不是什么新问题了,这里说一下我遇到的这个操蛋事. 转载请注明出处 http://www.cnblogs.com/zaiyuzhong/p/6236263.html 我做的和往常一样,找到SDK开发包中的dll文件copy到项目然后添加引用,报错“未能添加对xxx.dll的引用,不是一个有效的blahblahblah”,试了下列网上的解决方法,未果. 想了一下演示程序里也有dll,copy过来,报错“未找到接口地址blahblahblah”.看了一下示例代码没发现有dll文件,大惊,遂打开示例

未能添加对***.dll的引用问题

在机器A上运行.编译成功的程序,在B上不能正确被编译,并且添加r如 knbook.dll 时候提示如下: 未能添加对"knbook.dll"引用,请确保此文件可以访问并且是一个有效的COM组件或程序集 解决方法2个: 1.检查此dll文件是否为”只读“,修改方法,右键”属性“,若文件”属性“那里的只读勾选了,请去掉勾选. 然后重新添加引用即可 若还出现上述不能添加的问题,用下面的解决办法2 2.命令控制台下输入:regsvr32  e:\drms\web\knbook.dll(DLL文

Python引用复制,参数传递,弱引用与垃圾回收

引用 先上个示例: >>> val = [1] >>> val[0] = val >>> val [[...]] 上述代码使val中包含自身,而产生了无限递归.上述示例表明Python中的变量名为引用类型,赋值只是使得左值指向与右值相同的内存对象. is运算符可以判断两个引用是否指向了同一个对象,而==运算符判断两个引用指向的值是否相等而不关心指向什么对象. 对引用不了解的朋友,可以把Python引用与C/C++中的void *类比,不过因为垃圾回收机

Windows Store App 全球化:在XAML元素中引用字符串资源

在应用程序中可以通过XAML元素和后台代码两种方式引用资源文件中的字符串资源.本小节先讲述如何在XAML元素中引用字符串资源的相关知识点. 在XAML元素中可以通过使用x:Uid属性来引用资源文件中的字符串资源,这些字符串资源存储在资源文件中,下面介绍如何在项目中新建资源文件.添加字符串资源以及在XAML元素中通过x:Uid属性引用资源文件中的字符串资源. 在Visual Studio 2012中新建一个Windows应用商店的空白应用程序项目,并命名为StringResourcesInXaml