我正在加载此应用程序时,我在Chrome中收到此错误:
无法获取样式表50的文本:找不到具有给定ID的样式表
后续页面加载重复错误,但使用不同的数字:
无法获取样式表152的文本:找不到具有给定ID的样式表
这仅发生在Chrome中,仅适用于此应用程序.没有堆栈跟踪,引用或任何其他有关给出id的信息,所讨论的样式表是什么,或者是什么原因引起的.如何找到导致此错误的原因并进行修复?
我的应用程序混合了3.5和4.0目标程序集.我正在开发一个针对4.0的新Windows服务,该项目似乎突然无法看到解决方案中的其他一些程序集.意思是,在构建时,对这些特定其他程序集的所有引用都会产生以下错误:
命名空间'[Y]'中不存在类型或命名空间名称'[X]'(您是否缺少程序集引用?)
如果我删除了项目引用并重新添加它,那么红色的波浪线会消失,Intellisense会像它应该的那样再次启动.解决方案中的所有其他项目都没有问题. 但是一旦我尝试构建这个新项目,错误就会重新出现.
其中一个失败的引用是我们的Core.dll,其目标是3.5.我们最近添加了一个CoreEx.dll,目标是4.0,在程序集之间共享命名空间.新服务可以看到CoreEx.dll但不能看到Core.dll ...即,当我开始输入using Core.Utilities...Intellisense时,会从CoreEx.dll中选择较小的命名空间集,但不会显示只出现在Core.dll中的任何命名空间.我非常确定在添加此解决方案后成功构建了解决方案,但这是近期值得注意的变化.
另一个失败的参考是我们的核心Data.dll,它包含一堆数据集和Entity Framework的东西.这个最近迁移到4.0.再次,我几乎肯定了迁移项目后构建的解决方案,但值得一提.
最后一个失败的引用是一个程序集,它使用来自服务的"up"级别的命名空间.例如,有问题的项目基于命名空间ProductName.Component.ComponentService,无法看到基于命名空间的项目ProductName.Component.最近这个问题与有问题的项目一起创建,目标也是4.0.
正如您所看到的,似乎没有任何押韵或理由使汇编引用失败......并且有问题的项目可以成功引用解决方案中的某些其他程序集.我已经尝试过清理,重新构建,重新启动Visual Studio ......没有任何东西永久修复它.可能是什么导致了这个?
我一直在Visual Studio(2010,.NET 4.0项目)中对Windows服务进行更改,当我关闭解决方案或提交到TFS时,Visual Studio会提示我保存.psess文件(MyService.psess)我以前从未见过,似乎还没有出现(弹出一个文件保存对话框提示我输入一个位置).
我在这个文件上找不到任何文档.它是什么?我可以做些什么来创造它?需要吗?
如果我在检查取消时仍有一个仍在范围内的CancellationTokenSource - 例如,如果我刚刚进行了数据库查询并且尚未将CancellationToken传递给Tasks以处理结果 - 我是否应该访问IsCancellationRequested来自源或其令牌?
换句话说,如果两个选项都可用,这是首选,为什么?
1:
myCancellationTokenSource.IsCancellationRequested
Run Code Online (Sandbox Code Playgroud)
2:
myCancellationTokenSource.Token.IsCancellationRequested
Run Code Online (Sandbox Code Playgroud) 当我从Visual Studio调试我的Xamarin.iOS项目时,它会在模拟器上构建,安装,并毫无问题地启动应用程序.但是在启动时,我看到一堆Debug跟踪来自一种方法,这种方法在我的C#代码中甚至不再存在.我还可以在类中设置断点,我从该方法中删除了该方法所使用的相同行号,并且当调试器停止时,我将在调用堆栈中看到删除的方法.
我已关闭并重新打开Visual Studio,重置与Mac构建服务器的连接,清理并重建我的解决方案,并手动删除解决方案输出.在Mac上,我已关闭并重新打开模拟器,并尝试重置内容和设置,这确实清除了应用程序.但即便如此,情况仍然存在.还有什么我可以在Mac上尝试确保旧代码的所有缓存副本都已删除吗?
我有一个ClickOnce部署的应用程序,我正在使用它来检测第一次运行新部署时:
if (ApplicationDeployment.IsNetworkDeployed
&& ApplicationDeployment.CurrentDeployment.IsFirstRun)
{
// Display release notes so user knows what's new
}
Run Code Online (Sandbox Code Playgroud)
在ClickOnce执行自动更新后,它似乎按预期工作.
但是当用户在安装站点上发布publish.htm并手动安装新版本时,它根本不起作用.有没有办法可靠地检测这两种情况?
编辑:我正在尝试解决的情况:有时用户会听到已发布更新并手动转到publish.htm以获取新版本,而不是启动应用程序并让ClickOnce处理升级.对于ClickOnce,这显然与首次安装无法区分.真的吗?
解决方案代码:我最终使用以下关键部分创建了一个ClickOnce帮助程序类:
public static bool IsFirstRun
{
get
{
if (!IsNetworkDeployed)
return false; // not applicable == bool default value
if (!File.Exists(VersionFileName))
return true;
return (GetLastRunVersion() != Version.ToString());
}
}
public static void StoreCurrentVersion()
{
File.WriteAllText(VersionFileName, Version.ToString());
}
public static string GetLastRunVersion()
{
using (var stream = File.OpenText(VersionFileName))
{
return stream.ReadToEnd();
}
}
public static string VersionFileName
{ …Run Code Online (Sandbox Code Playgroud) 假设我有一个集合System.Threading.Tasks.Task:
HashSet<Task> myTasks = new HashSet<Task>();
Run Code Online (Sandbox Code Playgroud)
...我定期向集合中提供更多内容,因为我有更多需要处理的数据:
foreach (DataItem item in itemsToProcess)
myTasks.Add(
Task.Factory.StartNew(
() => Process(item),
cancellationToken,
TaskCreationOptions.LongRunning,
TaskScheduler.Default));
Run Code Online (Sandbox Code Playgroud)
由于Tasks TaskStatus.RanToCompletion在完成后仍保持状态而不是仅仅消失,因此它们将保留在集合中,直到明确删除并且集合将无限增长.该Task的需要进行修剪,以防止这一点.
我看过的一种方法是提供对Task集合的访问,并在最后将其删除.但我也在看一个架构,我必须删除我的组件尚未创建的任务.我的第一个想法是附加一个触发器或事件来完成每个任务,如下所示:
foreach (Task task in createdSomewhereElse)
{
lock (myTasks) myTasks.Add(task);
task.WhenTaskIsCompleted +=
(o, ea) => { lock(myTasks) myTasks.Remove(task); };
task.Start();
}
Run Code Online (Sandbox Code Playgroud)
......但Task没有这样的事件.有没有什么好方法可以完成我正在寻找的东西?像这样的东西:
我试图找出如何在抽象类或接口中无法使用静态方法来解决问题时遇到一些问题.请考虑以下代码.我有许多从AbsWizard继承的向导.每个向导都有一个方法GetMagic(字符串拼写),它只返回某些魔术字的魔法,但特定类型的向导的所有实例都响应同一组魔术字.
public abstract class AbsWizard
{
public abstract Magic GetMagic(String magicword);
public abstract string[] GetAvalibleSpells();
}
public class WhiteWizard : AbsWizard
{
public override Magic GetMagic(string magicword)
{
//returns some magic based on the magic word
}
public override string[] GetAvalibleSpells()
{
string[] spells = {"booblah","zoombar"};
return spells;
}
}
public class BlackWizard : AbsWizard
{
public override Magic GetMagic(string magicword)
{
//returns some magic based on the magic word
}
public override string[] GetAvalibleSpells()
{
string[] spells = { …Run Code Online (Sandbox Code Playgroud) 每当我运行测试,然后尝试再次运行测试时,我会收到以下错误:
无法对测试运行进行排队.
无法启动程序'C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\Common7\IDE\QTAgent32.exe'.
如果我在此之后再次运行测试,它会正常进行.换句话说,我每次尝试运行测试时都会收到此错误.无论先前的测试是成功还是失败,无论是运行完成还是中断,或者我是否在整个解决方案中运行一个测试或全部测试都无关紧要.
可能是什么导致了这个?我可以尝试修复它吗?
我正试图保存这样的记录:
var testRecord = new SecRecord(SecKind.GenericPassword)
{
CreationDate = DateTime.UtcNow,
MatchCaseInsensitive = false,
Service = "MyService",
Label = "MyService",
Account = "User",
Generic = NSData.FromString("test", NSStringEncoding.UTF8),
};
SecKeyChain.Add(testRecord);
Run Code Online (Sandbox Code Playgroud)
...但是当我在模拟器中运行它时,我得到了SecStatusCode.Param.根据文档,该代码表示"通过的参数无效或不完整",但我没有看到任何遗漏或异常,其他人没有取得明显的成功.
甚至向SecRecord 添加CreationDate,Invisible,Description,Comment,Accessible 和 ValueData属性(如本示例中的一些)也没有帮助 - 仍然获得SecStatusCode.Param.
是否存在可能导致Param状态代码返回的非显而易见的事情?
我可以成功注册我的应用程序进行推送通知:
UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(
UIRemoteNotificationType.Alert
| UIRemoteNotificationType.Badge
| UIRemoteNotificationType.Sound);
Run Code Online (Sandbox Code Playgroud)
但每当我执行此操作时,我的UI通常会挂起2-3秒.即使我在应用程序生命周期的早期按照推荐(例如,偶数WillFinishLaunching),在我的第一个ViewController加载后,我的UI仍然会挂起.
我的第一个想法是在一个单独的线程中执行注册,但MonoTouch阻止了这个:
// From MonoTouch.UIKit
public virtual void RegisterForRemoteNotificationTypes(UIRemoteNotificationType types)
{
UIApplication.EnsureUIThread();
Run Code Online (Sandbox Code Playgroud)
我的下一个想法是至少弹出一个UIAlertView盒子让用户知道正在发生的事情,但由于某种原因它直到注册发生后才显示,导致UIAlertView开放并立即关闭!
modalPopup = new UIAlertView("Working", "The application is loading...", null, null);
modalPopup.Show();
// It doesn't show here!
RegisterForRemoteNotificationTypes();
// It shows here!
modalPopup.DismissWithClickedButtonIndex(0, true);
Run Code Online (Sandbox Code Playgroud)
我怎么能
在AssociatedControlIDLabel控件上设置属性时,它将呈现<label>HTML标签,其for属性设置为目标控件的ClientID:
<label id="Label" for="TextBox">Dat TextBox</label>
<input id="TextBox" name="TextBox" type="text">
Run Code Online (Sandbox Code Playgroud)
我制作了一个服务器控件,其中包含一个TextBox,我希望标签将其for属性呈现给控件的内部TextBox。我首先想到的是直接指向我的服务器控件:
<asp:Label ID="AwesomeLabel" runat="server" AssociatedControlID="AwesomeControl">
Check out my awesome control!</asp:Label>
<custom:MyControl ID="AwesomeControl" runat="Server" />
Run Code Online (Sandbox Code Playgroud)
但这使该for属性指向<span>围绕服务器控件内容呈现的属性:
<label id="AwesomeLabel" for="AwesomeControl">Check out my awesome control!</label>
<span id="AwesomeControl">
<input name="AwesomeControl$ct123" type="text"></span>
Run Code Online (Sandbox Code Playgroud)
好像只是通过获取目标控件的ClientID来AssociatedControlID设置for属性:
http://msdn.microsoft.com/zh-CN/library/system.web.ui.webcontrols.label.associatedcontrolid.aspx
我不想进入页面的.aspx.cs以编程方式进行设置,因为该服务器控件被频繁使用,并且我希望其实现尽快。
还有其他方法可以使Label标签通过for.aspx标记或通过服务器控件的代码将其属性呈现到服务器控件的内部TextBox中吗?