我有一个大的c#解决方案文件(~100个项目),我正在努力改善构建时间.我认为"复制本地"在很多情况下对我们来说都是浪费,但我想知道最佳做法.
在我们的.sln中,我们有应用程序A取决于程序集B,它取决于程序集C.在我们的例子中,有几十个"B"和一些"C".由于这些都包含在.sln中,我们正在使用项目引用.所有程序集当前都构建为$(SolutionDir)/ Debug(或Release).
默认情况下,Visual Studio将这些项目引用标记为"复制本地",这会导致每个"C"被复制到$(SolutionDir)/ Debug中,对于构建的每个"B".这似乎很浪费.如果我只关闭"复制本地",会出现什么问题?大型系统的其他人做什么?
跟进:
很多响应建议将构建分解为较小的.sln文件......在上面的示例中,我将首先构建基础类"C",然后是大量模块"B",然后是一些应用程序,"一个".在这个模型中,我需要对来自B的C进行非项目引用.我遇到的问题是"Debug"或"Release"被添加到提示路径中,我最终构建了我的Release版本的"B"反对"C"的调试版本.
对于那些将构建拆分为多个.sln文件的人,如何管理这个问题?
遵循RavenDB的文档后
http://ravendb.net/docs/article-page/2.5/csharp/samples/raven-tests/createraventests
我无法成功通过内存文档存储的创建来运行单元测试.我使用RavenDB的RavenTestBase复制并粘贴了上面文档中的测试样本.
[TestClass]
public class IndexTest : RavenTestBase
{
[TestMethod]
public void CanIndexAndQuery()
{
using (var store = NewDocumentStore())
{
new SampleData_Index().Execute(store);
using (var session = store.OpenSession())
{
session.Store(new SampleData
{
Name = "RavenDB"
});
session.SaveChanges();
}
using (var session = store.OpenSession())
{
var result = session.Query<SampleData, SampleData_Index>()
.Customize(customization => customization.WaitForNonStaleResultsAsOfNow())
.FirstOrDefault();
Assert.Equals(result.Name, "RavenDB");
}
}
}
}
public class SampleData
{
public string Name { get; set; }
}
public class SampleData_Index : AbstractIndexCreationTask<SampleData>
{
public SampleData_Index()
{ …Run Code Online (Sandbox Code Playgroud) 我一直在尝试将一个新的asp.net mvc项目部署到Azure进行生产.一切都在本地工作,但我在部署时遇到组件问题.
导航到大多数页面后,我开始收到以下错误:
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
Run Code Online (Sandbox Code Playgroud)
使用以下信息:https://stackoverflow.com/a/8824250/1411764我发现了异常:
Could not load file or assembly 'Microsoft.Web.Administration,
Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or
one of its dependencies. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
Microsoft.Web.Administration 似乎是一个IIS程序集.
然后我Microsoft.Web.Administration使用Nuget添加到项目中.
现在我遇到了一个新的错误:
Could not load file or assembly 'Microsoft.Web.Administration' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from …Run Code Online (Sandbox Code Playgroud) 当我使用Resharper Unit Test Runner运行或调试我的单元测试时,我弹出一个对话框,说"单元测试运行器无法运行测试 - 无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息" :
现在我尝试了重建,清理,手动删除文件夹,可视工作室重启,硬件重启,查看输出/调试窗口,以及晚上启用R#"内部"模式,以便我可以看到它的日志(写入%Temp%\ JetLogs据我了解),但没有一个解决它或提供任何线索.我试过"调试"R#但是在调试器遇到任何异常之前,对话框再次弹出.
我该怎么解决这个问题呢?这非常烦人!
我正在使用:
.net resharper unit-testing visual-studio visual-studio-2015
我从现有的应用程序中设置了IIS应用程序.
父母web.config是继承还是我必须明确设置的东西?
我有一个问题,只显示EntityDataSource是否存在于ASP.NET(*.aspx)页面上.有趣的是,当我刷新页面(F5或再次查看)并且它让我发疯时,它似乎是一个实体框架的错误,因为我尝试了另一个项目,我只是得到了同样的错误.
无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.异常详细信息:System.Reflection.ReflectionTypeLoadException:无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.
堆栈跟踪:
[ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.]
System.Reflection.RuntimeModule.GetTypes(RuntimeModule module) +0
System.Reflection.RuntimeModule.GetTypes() +4
System.Reflection.Assembly.GetTypes() +78
System.Data.Metadata.Edm.ObjectItemConventionAssemblyLoader.LoadTypesFromAssembly() +32
System.Data.Metadata.Edm.ObjectItemAssemblyLoader.Load() +25
System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(Assembly assembly, Boolean loadReferencedAssemblies, ObjectItemLoadingSessionData loadingData) +160
System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(Assembly assembly, Boolean loadReferencedAssemblies, KnownAssembliesSet knownAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage, Object& loaderCookie, Dictionary`2& typesInLoading, List`1& errors) +166
System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage) +316
System.Data.Metadata.Edm.ObjectItemCollection.ExplicitLoadFromAssembly(Assembly assembly, EdmItemCollection edmItemCollection, Action`1 logLoadMessage) +53 …Run Code Online (Sandbox Code Playgroud) .net c# entity-framework exception-handling entitydatasource
我有一个问题,DLL在运行时加载C#.
以下代码:
foreach (var f in Directory.EnumerateFiles(startFolder, "*.dll", SearchOption.AllDirectories))
{
try
{
var assembly = Assembly.LoadFrom(f);
var types = assembly.GetTypes(); //exception raised here
foreach (var type in types)
{
if (type.GetInterface("IPlayerFactory") != null)
instances.Add((IPlayerFactory)Activator.CreateInstance(type));
}
assembly = null;
}
catch (ReflectionTypeLoadException ex) { /* later, keep reading */}
Run Code Online (Sandbox Code Playgroud)
所以例外说:
An exception of type 'System.Reflection.ReflectionTypeLoadException' occurred in
mscorlib.dll but was not handled in user code
Additional information: Unable to load one or more of the requested types. …Run Code Online (Sandbox Code Playgroud) 我有一个使用实体框架的 Web 服务。当发布到测试环境时,我收到以下错误:
“无法加载一种或多种请求的类型。” - 下面的堆栈跟踪...
测试盒安装了.NET 3.5 SP 1,我已经在这里阅读了之前的帖子:
错误消息“无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。
然而,答案并不能解决我的情况。我已将开发计算机上的工作副本复制并粘贴到测试盒上,以确保调试 DLL 不存在问题(如答案所示),但运气不佳。
这是一个已知的问题?我花了整个早上尝试调试这个!如果有人知道解决方案,请告诉我!
Retrieve the LoaderExceptions property for more information. at System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark)
at System.Reflection.Assembly.GetTypes()
at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext context)
at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext context)
at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(Assembly assembly, Boolean loadReferencedAssemblies, Dictionary`2 knownAssemblies, Dictionary`2& typesInLoading, List`1& errors)
at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies)
at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(Type type)
at System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(Type type, Assembly callingAssembly)
at System.Data.Objects.ObjectContext.CreateQuery[T](String queryString, ObjectParameter[] parameters)
at Company.Domain.ICommuicationsEntities.CreateQuery[T](String queryString, ObjectParameter[] parameters)
at Comany.EntityFrameworkRepository`1.GetQuery()
at Comany.Repositories.EntityFrameworkRepository`1.GetFiltered(Expression`1 filter, IncludeBuilder`1 includeBuilder)
at Comany.Repositories.EntityFrameworkRepository`1.GetFiltered(Expression`1 …Run Code Online (Sandbox Code Playgroud) 使用"运行在溶液中的所有测试"或"运行检查测试"的时候,我发现了以下错误,但如果我使用"调试检查测试"他们跑的罚款.
无法获取类型TestDataLayer.TestPatientDAO,TestDataLayer,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null.错误:System.TypeLoadException:无法从程序集"DomainLayer,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"加载类型"DomainLayer.BaseEntity".
DomainLayer.BaseEntity是一个抽象类.
删除和添加对DomainLayer的引用再次没有帮助.
卸载和加载TestDataLayer或DomainLayer没有帮助.
编辑:删除和添加CodeCoverage解决了问题(wtf)
在 C# 中,当尝试获取类型时,使用下面的代码从文件夹加载 DLL,获取下面的堆栈跟踪。
var assembly = Assembly.LoadFile(assemblyInfo.FullName); // assembly loads perfectly using the absolute path.
var types = assembly.GetTypes(); // this line throws the below stacktrace.
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.Assembly.GetTypes()
Run Code Online (Sandbox Code Playgroud)
我还检查了现有的解决方案:错误消息“无法加载一种或多种请求的类型”。检索 LoaderExceptions 属性以获取更多信息。,在 C# 中运行时加载 DLL(不起作用)
c# ×4
.net ×3
dll ×2
unit-testing ×2
asp.net ×1
asp.net-mvc ×1
azure ×1
dllimport ×1
iis-7 ×1
msbuild ×1
mstest ×1
ravendb ×1
reflection ×1
resharper ×1
web-config ×1