小编Mem*_*per的帖子

自动将.Net Web App部署到Azure和SQL Azure和Azure Blob

果壳:

我想要一些帮助/信息/资源为我的Web应用程序设置Team Build,MsBuild,TFS 2010自动部署到Azure(包括所有数据库位).

理想情况下,我想要一个可以从VS2010团队资源管理器UI"队列新构建"中启动的流程,然后只关注它的进度,让我开始处理其他事情.选择深入研究任何问题的日志记录,并知道我的流程是健壮的,完整的,完全非手动的,即:

  • 备份所有实时数据(SQL Azure和Azure Blob)
  • 部署任何数据库架构更改(包含在我的数据库项目中)
  • 将任何数据更改部署到我的核心数据(例如配置数据等 - 我在我的Post-Deployment脚本中有)
  • 事情是否合理(例如,使用压缩部署包来节省时间和带宽)
  • 掩盖我愚蠢的背面(例如无缝地回滚失败的变化)
  • 在部署期间保持app 100%运行(失败或成功),例如会话保持完整,数据丢失的可能性极小
  • 在每个阶段保留详细的流程进度日志,以解决任何问题
  • 保持应该源控制良好的一切......源控制

背景/梦想/目标:

在我上一次的FT工作中,我们使用CC.Net(管理流程),CCTray和CC.NET Web UI来监控和控制代码生成(CodeSmith + NetTiers模板对于数据访问和实体),MSBuild,VS Databse项目,一些.bat脚本,以及一些方便的实用程序,如PsExec等,以帮助解决一些小问题.我没有设置它,但有管理它的经验,处理问题等.

这是(98%的时间)部署的可爱体验.您需要确保TFS是最新的,双击CCtray,右键单击项目,然后单击"强制构建",坐下来观看绿色=>黄色=>绿色.

太棒了!!

现在的情况 :

我运行自己的Micro ISV,我的主项目是Azure上的应用程序(在Beta中).我非常希望复制以前的部署体验 - 我甚至考虑将Azure迁移到专用服务器 - 只是因为我知道我可以在那里设置自动部署系统.

我的主要停止点是DB位,看起来像是一场噩梦.也许我错过了一些很棒的免费工具或图书馆来完成这项工作,我真的很希望如此,但我也可以真正做到这一点的经验,指出我正确的方向,以获得"最佳实践"解决方案.所有的小点整齐地.

我已经搜索谷歌,阅读和阅读,烧了几个小时和几个小时,但我似乎找到的是一半解决方案,不适合我的项目和需求,基于我买不起的昂贵工具(接近0美元的预算),或者我的头脑清醒,有点难以理解和可怕.

现在我不是系统管理员,但是有足够的时间我通常可以解决我需要做的事情.

但是,我现在没有任何时间,我整个项目的成功真的取决于我能否减少我目前忍受的可怕的40分钟+手动部署浪费.

我希望能够获得一些用户反馈,发现错误或编写改进代码,并自信地启动部署并破解其他内容.

Azure在当前状态下开发的额外问题(与专用服务器相对),以及MS目前相当差的工具支持(我知道有很多改进,但我现在需要一些东西) - 让我游泳一个"我不知道"的海洋和"我不确定",并且倾向于以一个大的结尾:

"我放弃了+近一个小时的手动部署+内部的一点点抽泣,因为我的梦想部署天堂再次死亡":(

但是我知道那里的人比我自己更熟练,知识渊博,经验更丰富.我似乎无法找到我确信在那里的信息.

因此,如果有人对此有一些很好的资源,提示,链接,评论或意见,我很乐意听到.

我的设置细节:

应用程序在Azure中运行(处于测试阶段 - 部分原因是由于没有自动部署设置),在生产插槽中运行,我没有打扰暂存插槽,因为子域/ DNS /自动生成的一些问题网址让人看起来很痛苦/不可行.

Azure/App:

应用程序是

1 Web角色

  • ASP.NET 4
  • MVC 2
  • EF 4
  • SQL Azure
  • Azure Blob存储

1工作者角色 - …

deployment msbuild tfs azure azure-sql-database

11
推荐指数
1
解决办法
1962
查看次数

WinRT - MessageDialog.ShowAsync将在我的自定义类中抛出UnauthorizedAccessException

我想编写自己的控件,当调用ctor时,会显示一个MessageBox.

public class Class1
{
    public Class1()
    {
        ShowDialog();
    }
    void ShowDialog()
    {
        SynchronizationContext context = SynchronizationContext.Current;
        if (context != null)
        {
            context.Post((f) =>
            {
                MessageDialog dialog = new MessageDialog("Hello!");
                dialog.ShowAsync();
            }, null);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我的类被某人使用,并编写如下代码,则始终会抛出UnauthorizedAccessException dialog.ShowAsync();

void MainPage_Loaded(object sender, RoutedEventArgs e)
        {

            ClassLibrary1.Class1 c1 = new ClassLibrary1.Class1();
            MessageDialog dialog1 = new MessageDialog("");
            dialog1.ShowAsync();
        }
Run Code Online (Sandbox Code Playgroud)

有没有办法毫无例外地显示消息对话框?


我找到了一种方式,享受它!

Task ShowDialog()
        {
            CoreDispatcher dispatcher = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
            Func<object, Task<bool>> action = null;
            action = async (o) =>
            {
                try
                {
                    if (dispatcher.HasThreadAccess) …
Run Code Online (Sandbox Code Playgroud)

.net c# unauthorizedaccessexcepti messagedialog windows-runtime

11
推荐指数
1
解决办法
9825
查看次数

使用url嵌入视频

给定一个youtube网址,如何使用.net c#将视频嵌入到页面中?

html c# youtube asp.net video

8
推荐指数
3
解决办法
2万
查看次数

MS OData客户端代码生成器失败:编译转换:找不到元数据文件"Microsoft.OData.Client.dll"

在使用VS 2013将项目从源代码控制下拉到新的开发机器后,我发现我无法再生成客户端代理和实体类(来自"OData客户端代码生成器"创建的.tt文件)

我得到了用于编译转换的异常

  • Microsoft.OData.Client.dll
  • Microsoft.OData.Core.dll
  • Microsoft.OData.Edm.dll

例如

Compiling transformation: Metadata file 'Microsoft.OData.Client.dll' could not be found
Run Code Online (Sandbox Code Playgroud)

接下来是几百个其他构建错误,因为tt文件失败或者生成所需的类而只给出了dreaded

ErrorGeneratingOutput 
Run Code Online (Sandbox Code Playgroud)

尽管这些dll及其附带的xml文件存在于项目Bin中的正确位置.

c# t4 odata asp.net-web-api

8
推荐指数
1
解决办法
3495
查看次数

When to use Async methods in EF Core?

I'm building an application with an SQL database, with the following CRUD operations:

public Foo Add(Foo foo)
{
    _dbContext.Foos.Add(foo);
    _dbContext.SaveChanges();
    return foo;
}

public Foo Delete(int id)
{
    Foo foo = _dbContext.Foos.Find(id);
    if(foo != null)
    {
        _dbContext.Foos.Remove(foo);
        _dbContext.SaveChanges();
    }
    return foo;
}
Run Code Online (Sandbox Code Playgroud)

However, some of these methods have asynchronous versions. The following still works:

public async Task<Foo> Add(Foo foo)
{
    await _dbContext.Foos.AddAsync(foo);
    await _dbContext.SaveChangesAsync();
    return foo;
}

public async Task<Foo> Delete(int id)
{
    Foo foo = await _dbContext.Foos.FindAsync(id);
    if(foo != …
Run Code Online (Sandbox Code Playgroud)

c# performance asynchronous entity-framework-core asp.net-core-3.1

8
推荐指数
2
解决办法
7782
查看次数

在Visual Studio 2010中格式化XML的工具

是否有XML格式化程序可用作Visual Studio 2010的加载项?我目前正在使用Notepad ++并使用XML Tools插件来格式化排序.

是否有VS2010的加载项,它会做类似的事情?

xml xaml xml-formatting visual-studio vsix

7
推荐指数
1
解决办法
9105
查看次数

MS Graph VS Outlook REST API,OAuth,Win Store/UWP,Xamarin,WebAPI,SSO,Live SDK已弃用 - 混淆

经过数小时的谷歌搜索,阅读MS文档和代码示例,我现在更加困惑,需要一些架构建议.

基本上我需要弄清楚哪些API适用以及如何从它们开始.

背景

我有一个现有的应用程序(目前是一个XAML + c#win store 8.1应用程序),带有一个WebAPI 2.2 odata(以及一些MVC页面)后端.

客户端应用程序在Win 8.1上运行良好并赢得10台机器服务器端位于天蓝色VM中.

目前

  • 用户使用他们的Microsoft帐户登录应用程序(作为他们登录到Windows的用户)
  • 他们不必键入用户名/密码,他们只接受我用范围指定的权限(1x),例如"wl.basic","wl.emails","wl.calendars"
  • 为此,我使用的是Live Connect库(Microsoft.Live.dll,v5.6.0.0)
  • 然后我从LiveLoginResult获得AuthenticationToken

例如

_loginResult.Session.AuthenticationToken
Run Code Online (Sandbox Code Playgroud)
  • 我将其与odata请求一起传递给服务器.
  • 服务器使用它来查找他们的LiveID/UserID

例如

LiveAuthClient authClient = new LiveAuthClient(clientId, clientSecret, redirectUrl); 
string liveIdGuidAsString = authClient.GetUserId(authenticationToken);
Run Code Online (Sandbox Code Playgroud)
  • 然后我用它来查找我的数据库中的相关用户,并将他们的odata内容提供给客户端应用程序

一切都很好.

我想扩展我的应用程序以与用户的Outlook的日历同步/集成

似乎这些天要做到这一点的合理方法是使用

  • Outlook REST API
  • MS Graph

MS似乎也可能随时关闭我正在使用的Live API

https://msdn.microsoft.com/en-us/library/hh243641.aspx

额外的复杂性

我也(在几个月的时间内)想要将应用程序扩展到

  • 是X平台(可能使用Xamarin传统的PCL代码共享和用于UI的"xamarin传统"平台特定项目,可能使用MVVMCross)
  • 允许用户使用其他服务进行身份验证(所有OAuth 2.0) - 例如google/gmail帐户

这意味着我希望在可能的情况下将其作为"原始OAuth"以实现兼容性,而不是将自己绑定到任何特定的MS API(显然,outlook/outlook.com日历集成只是具有MS帐户的用户可用的功能)

此外,一些现有用户拥有outlook.com帐户(他们用来登录Windows)但在Hosted Exchange 2010中拥有他们的日历数据

似乎要访问此日历数据,这些用户必须将所有Outlook 2016数据移至outlook.com,或将其设置为office 365帐户并将数据迁移到新帐户.

问题

1.我应该在何处/与谁进行身份验证以获取我的授权码和访问令牌 - MS Graph?或Outlook REST API

我已经看到了这个答案(即基本上更喜欢MS …

office365 live-sdk azure-active-directory auth0 microsoft-graph

5
推荐指数
1
解决办法
1067
查看次数

为什么我使用foreach与LINQ .Where()进行不同的结果过滤?

过滤时我似乎得到了不同的结果.我希望这两段代码得到相同的结果:

Sitecore.Data.Items.Item firstGuess = Sitecore.Context.Database.GetItem(mediaPath);
var matches = new List<Item>();

//Method A
foreach (var child in firstGuess.Parent.Children.InnerChildren)
{
    if (child.DisplayName == firstGuess.DisplayName)
    {
            matches.Add(child);
    }
} 
//Matches.count  = 2

//Method B
var matches2 = firstGuess.Parent.Children.InnerChildren.Where(i => i.DisplayName == firstGuess.DisplayName);
//matches2.any = false
Run Code Online (Sandbox Code Playgroud)

我想找到与我同名的物品firstGuess.

方法A按预期工作,而B似乎给我一个奇怪的结果是!matches2.any()返回false,当我希望true.

.Where和测试.Select

为什么这些看似相同的方法会给我不同的结果

c# linq foreach sitecore

5
推荐指数
1
解决办法
182
查看次数

T4"编译转换:已导入具有相同标识的程序集".尝试删除其中一个重复的引用."?

我一直在努力

编译转换:已导入具有相同标识"xxxx"的程序集.尝试删除其中一个重复的引用.

使用T4在设计时生成一些代码 - 将几个不同的可重用模板保存为.ttinclude文件,并在许多不同的"父"模板中共享.

我在这之间切换,当我删除其中一个引用(在我自己的ttinclude文件中)时,替换为:

编译转换:找不到类型或命名空间名称'yyy'(您是否缺少using指令或程序集引用?)

围绕圈子,任何想法?

t4 templates code-generation visual-studio-2010

2
推荐指数
1
解决办法
1593
查看次数