如何.csproj从命令提示符添加新文件?
我的一位同事在我们的代码中发现了一个问题,并且花了一段时间才能确切地查找正在发生的事情,但最好通过这个简单的例子来证明:
// Fails
class Program
{
static void Main(string[] args)
{
Task.Run(() => Console.WriteLine("Hello World"));
Console.ReadKey();
}
}
// Works fine
class Program
{
static void Main(string[] args)
{
Console.Write(String.Empty);
Task.Run(() => Console.WriteLine("Hello World"));
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
从中解决这个问题很明显,从主线程到任何地方写入控制台都会允许后台线程写入控制台,但是我们很难理解为什么会发生这种情况.任何人都可以解释从主线程写到控制台的内容是什么,第一个片段没有?
我有两个字符串:
string one = "13/02/09";
string two = "2:35:10 PM";
Run Code Online (Sandbox Code Playgroud)
我想将这两者结合在一起并转换为DateTime.
我尝试了以下但它不起作用:
DateTime dt = Convert.ToDateTime(one + " " + two);
DateTime dt1 = DateTime.ParseExact(one + " " + two, "dd/MM/yy HH:mm:ss tt", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
我能做些什么来完成这项工作?
如果我想序列化一个对象,我必须使用[Serializable]属性,所有成员变量都将写入该文件.我不知道如何进行版本控制,例如,如果我添加一个新的成员变量(重命名一个变量或只是删除一个变量),然后打开(反序列化)该文件,我如何确定对象/文件版本,这样才能正确设置新成员还是进行某种迁移?如何确定变量是否在加载期间初始化(由反序列化器忽略).
我知道有版本容忍方法,我可以用[OptionalField(VersionAdded = 1)]属性标记变量.如果我打开一个旧文件,框架将忽略这个可选(新变量),它将只是零/ null.但是,我如何确定变量是通过加载初始化还是被忽略.
我可以将类/对象版本号写入流中.使用ISerializable方法并在constructor(SerializationInfo oInfo, StreamingContext context)方法中读取此版本号.这将告诉我流中的类版本是什么.
但是我预计C#中的流式传输框架已经实现了这种版本控制.我试图从中获取程序集版本,SerializationInfo但它始终设置为当前版本而不是保存对象时使用的版本.
什么是首选方法?我在网上发现了很多文章,但我找不到一个很好的解决方案来解决版本问题......
任何帮助表示感谢,谢谢,深渊
当我们尝试使用Azure Mysql DB运行MVC4项目时,我们收到以下错误.
在Web.Config文件中,我们有以下内容,
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
</DbProviderFactories>
Run Code Online (Sandbox Code Playgroud)
错误:
无法找到或加载已注册的.Net Framework数据提供程序.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.Configuration.ConfigurationErrorsException:无法找到或加载已注册的.Net Framework数据提供程序.
来源错误:
Line 96: if (objectQuery != null && !string.IsNullOrEmpty(path))
Line 97: {
Line 98: return objectQuery.Include(path);
Line 99: }
Line 100:
Source File: C:\Phase2\FreeLance\FreeLance\Framework\Data\FreeLance.Data.Framework\EntityFramework\Extensions.cs Line: 98
Stack Trace:
[ConfigurationErrorsException: Failed to find or load the registered .Net Framework Data Provider.]
System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow) +2238858
System.Data.EntityClient.EntityConnection.GetFactory(String providerString) +143
System.Data.EntityClient.EntityConnection.ChangeConnectionString(String newConnectionString) +641
System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name, …Run Code Online (Sandbox Code Playgroud) 我有以下类和方法:
public class UserManager<TUser, TKey> : IDisposable
where TUser : class, global::Microsoft.AspNet.Identity.IUser<TKey>
where TKey : global::System.IEquatable<TKey> {
public virtual Task<TUser> FindByIdAsync(TKey userId);
Run Code Online (Sandbox Code Playgroud)
和:
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
set
{
_userManager = value;
}
}
public class ApplicationUserManager : UserManager<ApplicationUser, int>
public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole, CustomUserClaim>
Run Code Online (Sandbox Code Playgroud)
我试图像这样调用这个方法:
var user = await UserManager.FindByIdAsync<ApplicationUser,int>(99);
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
非通用方法
'Microsoft.AspNet.Identity.UserManager.FindByIdAsync(int)'不能与类型参数一起使用
我正在使用ReSharper(旧版本),当我使用PropertyInfo.DeclaringType它时它常常警告我null.
在第一眼和第二眼看来,这对我没有意义.这是真的,还是ReSharper有点愚蠢,并没有注意到它是一个PropertyInfo,而不是一般MemberInfo?
如何DataGridview在能够使用其值的同时隐藏特定列及其标题?(只是没有显示).以下代码不起作用.
gridview.Rows[e.RowIndex].Cells[11].Visible = false;
Run Code Online (Sandbox Code Playgroud) 我的网络浏览器:
XAML:
//...
xmlns:my="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
//...
<my:WindowsFormsHost Name="windowsFormsHost"/>
Run Code Online (Sandbox Code Playgroud)
C#背后的代码:
System.Windows.Forms.WebBrowser Browser = new System.Windows.Forms.WebBrowser();
windowsFormsHost.Child = Browser;
Run Code Online (Sandbox Code Playgroud)
我的问题是如何禁用所有音频输出.
我找到了这个:
C#:
private const int Feature = 21; //FEATURE_DISABLE_NAVIGATION_SOUNDS
private const int SetFeatureOnProcess = 0x00000002;
[DllImport("urlmon.dll")]
[PreserveSig]
[return: MarshalAs(UnmanagedType.Error)]
static extern int CoInternetSetFeatureEnabled(int featureEntry,
[MarshalAs(UnmanagedType.U4)] int dwFlags,
bool fEnable);
Run Code Online (Sandbox Code Playgroud)
它很好,但是这段代码只能禁用"咔嗒"声,所以在这种情况下它的那种无用.
我只想从我的应用程序100%静音,没有声音.
我已经读过,在这个webbrowser中,它需要通过Windows Sounds来完成,但我真的不知道我在代码中无法做到这一点.
对于模块化,我在运行时链接到我的解决方案中的DLL,而不是编译时间以允许我独立更新它.当我在库项目中放置断点时,在链接类时不会触发这些断点,并且会创建一个类型.
作为参考,这是反射代码:
Assembly a = Assembly.LoadFile(FULL_APPLICATION_CACHE + targetVersion + "\\Core.dll");
Type engineCoreType = a.GetType("Core.EngineCore");
object instance = Activator.CreateInstance(engineCoreType);
Run Code Online (Sandbox Code Playgroud)
Visual Studio是否可以在此方案中提供其常规调试工具?我该如何配置?
c# reflection visual-studio visual-studio-debugging visual-studio-2012