- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的项目结构
编辑:我创建了一个测试解决方案以查看是否可以重现问题,错误消失了,所以它似乎是原始项目中的其他一些构建时过程。我还不知道是什么。
我的问题
目前这会导致 B 的编译错误。
Unknown build error, 'Cannot resolve dependency to assembly 'PostSharp, Version=3.0.40.9, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.'
将 PostSharp 安装到 B 会导致新的警告。
The module 'B.exe' does not contain any aspect or other transformation. For improved build-time performance, consider disabling PostSharp for this module by setting the compilation symbol (aka constant) 'SkipPostSharp' in your project, or set the MSBuild property 'SkipPostSharp=True'.
如果我在项目属性中禁用 PostSharp,我现在会收到此错误。
#error: 'PostSharp is not introduced in the build process. If NuGet just restored the PostSharp package, you need to rebuild the solution.'
这来自 RequiresPostSharp.cs,它安装在每个 PostSharp 项目中。
我的目标
我需要消除所有错误和警告。
我提出的解决方案
我想如果我能消除第一个错误和将 PostSharp 添加到 B 的需要,一切都会好起来的。虽然我不知道如何修复它。
我的问题
最佳答案
当项目 B 是 WPF 应用程序 时,可以重现所描述的构建错误。在这种情况下,问题将由 XAML 编译器引起 - 它会尝试加载您的依赖项 (A) 引用的程序集,如果不成功则失败。
为避免构建错误,您还需要将 PostSharp 引用添加到您的 B 项目。当然,您随后会收到上述警告消息。
从版本 3.1 开始,PostSharp 不再将 RequiresPostSharp.cs 文件添加到您的项目中,而是在 msbuild 脚本中执行验证。因此,您可以安全地在项目 B 属性中禁用 PostSharp。这样您就可以避免错误和警告消息。
关于c# - 无法解析对程序集 'PostSharp' 的依赖性,因为它尚未预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823460/
我有一个包含许多项目的解决方案,我想禁用 Postsharp 进行调试构建,以减少本地开发人员的构建时间。有没有办法在不编辑每个项目文件的情况下做到这一点? 我知道这听起来像是一个坏主意,但我们只使用
我的 CI 构建服务器遇到问题,其中 PostSharp 导致构建失败,并显示以下消息:程序集“yada-yada.dll”使用未经许可的功能(基本功能)。 [...]。我们使用的是当前版本的 Pos
我可以指定 SkipPostSharp 常量来确保项目从 PS 进程的项目列表中排除。但我想反过来做。我希望 PS 假设它不应该处理我没有明确告诉它的任何内容。 这可以实现吗? 最佳答案 项目被Pos
依赖注入(inject)在 Postsharp 中不起作用。如何使方面可测试?我真的想避免创建具体的类来记录我的方面。 我不希望在单元测试方法时运行方面。如果我正在测试一种方法,我不希望触发日志记录方
是否有可能在 Postsharp 的编译期间找到程序集的项目文件夹/项目文件或输出路径,例如,在 CompileTimeInitialize 期间,当正在构建程序集时? 最佳答案 您可以在编译期间通过
我正在尝试修改 Postsharp 附带的示例跟踪应用程序,以便将跟踪应用于我的命名空间中的所有类,而无需显式地将 [QuickTrace] 放在每个类的顶部。我附上了截图。我究竟做错了什么 ?右键单
根据推荐的 PostSharp 最佳实践,我在我的所有项目中都包含了 PostSharp。但是,我在其中一些程序集中没有任何方面或其他转换;他们只是引用了其他确实有使用方面的项目。 在构建时,我收到以
刚刚从 nuget 包安装了 Postsharp 2.1,然后安装了 Phil Haack 的 NullGuard 包。 当我在类或方法级别添加 [EnsureNonNullAspect] 方面时,我
你如何得到参数姓名 的一种方法。这些示例向您展示了如何获取 值 参数,但不是 姓名 .我想看到 parma = 99, parmb = 1。不仅仅是 99, 1。 using System;
假设我有一个方面实现 IInstanceScopedAspect我将这个方面应用于类型中的方法。使用 FormatterServices.GetUninitializedObject 创建对象时如何初
我正在努力理解为什么要使用后编译器,例如 PostSharp ,是否需要? 我的理解是,它只是在原始代码中插入代码,那么为什么开发人员不自己编写代码呢? 我希望有人会说它更容易编写,因为您可以在方法上
是否可以使用 PostSharp 拦截类构造函数和析构函数调用?我想为类创建事件实例计数器。 最佳答案 您可以在构造函数和析构函数上使用 OnMethodBoundaryAspect。请注意,默认情况
我有几个项目,希望在多个项目中应用方面。我像这样使用多播属性: [assembly:MyProject.Aspects.NotifiableObject( AttributeTargetAss
创建了一个简单的类来测试 PostSharp 中的 OnExceptionAspect。 [Serializable] [AttributeUsage(AttributeTargets.Method
我有一个 MethodInterceptionAspect(PostSharp) 的实现但是当我在重写 OnInvoke 方法时,args.Method 为 null,我需要知道方法返回值类型, 有人
我创建了一个小的方面层次结构。示例: public abstract class MyBaseAspectAttribute : Aspect, IAspectProvider { ... p
我喜欢在跟踪级别上记录一些 Postsharp 消息。不幸的是,记录到这个级别没有输出。所有其他级别都在工作。与控制台或 NLog 后端或当我从其他类登录时的行为相同。 如何启用跟踪级别? App.x
在开始之前,我想澄清一下,我目前对 AOP 术语的理解如下...... 方面是 AOP 等同于 OOP 中的类。 通知是 AOP 等价于 OOP 中的方法。 切入点是 AOP 等价于 OOP 中的“使
我偶然发现了 PostSharp 的一个不可思议的良好性能行为。为了评估速度,我写了一个小程序,它会执行一个函数指定的次数,如果启用了 PostSharp,它会生成和删除几百个字符串,就在内存中(非固
我正在使用 postsharp 1.5 和 OnMethodBoundaryAspect 处理一个方面。我希望我的方面默认具有以下行为: 1 - 如果在类级别使用属性,则方面仅应用于 PUBLIC 方
我是一名优秀的程序员,十分优秀!